Buidling boost error: Name clash for '<pstage\lib>boost_system-vc120-mt-1_58.dll'

不羁的心 提交于 2019-11-28 01:44:28

问题


I'm trying to build boost on windows 8.1 with Visual Studio 2013 on 64bit system.

b2 toolset="msvc" address-model=64 -s ZLIB_SOURCE=C:\H\M\zlib --build-type=complete stage

Here is full output:

Performing configuration checks

    - symlinks supported       : no
    - junctions supported      : yes
    - hardlinks supported      : yes
    - arm                      : no
    - mips1                    : no
    - power                    : no
    - sparc                    : no
    - x86                      : yes
    - has_icu builds           : no
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
    - iconv (libc)             : no
    - iconv (separate)         : no
    - icu                      : no
    - icu (lib64)              : no
    - message-compiler         : yes
    - compiler-supports-ssse3  : yes
    - compiler-supports-avx2   : yes
    - gcc visibility           : no
    - long double support      : yes
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
error: Name clash for '<pstage\lib>boost_system-vc120-mt-1_58.dll'
error:
error: Tried to build the target twice, with property sets having
error: these incompabile properties:
error:
error:     -  <warnings>all
error:     -  <architecture>x86 <warnings>on
error:
error: Please make sure to have consistent requirements for these
error: properties everywhere in your project, especially for install
error: targets.

What does it mean and how to resolve it?

Thanks


回答1:


builds if I add --without-context --without-coroutine to b2 options




回答2:


Did you get boost from git repository?

If so, I think the latest version available in git is broken. Today I tried to compile it too and if you would solve errors you mentioned, you will get another errors because of incomplete files in destination directories (boost ptr_container library isn't installed after compilation from source)

The solution was download latest boost version from their site (http://sourceforge.net/projects/boost/files/boost/1.57.0/). After that, compilation and installation works correctly




回答3:


From the Boost 1.58 beta release notes:

Important Note

There is a bug with the build scripts; you have to specify the address-mode and architecture to b2. I used:

./b2 address-model=64 architecture=x86

to test this.

Adding these flags to the b2 command solves the problem without having to exclude the context and coroutine libraries (handy if, say, you actually use these libraries, like I do!).

Naturally, if you're building 32-bit libraries, you want to add address-model=32 instead.




回答4:


In my case I was using variant=release,debug command line argument, which was causing name collision.

I've added extra argument --layout=tagged and problem disappeared.

See also https://stackoverflow.com/a/55214183/2338477




回答5:


Maybe you have two version of g++ available in $PATH. Try running where g++. If you see two g++ then remove one from $PATH. And then start over all the build process again. That worked for me and



来源:https://stackoverflow.com/questions/27342524/buidling-boost-error-name-clash-for-pstage-libboost-system-vc120-mt-1-58-dll

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!