Ошибка повышения: столкновение имен для<pstage \ lib>boost_system-vc120-mt-1_58.dll'

Я пытаюсь построить boost на Windows 8.1 с Visual Studio 2013 в 64-битной системе.

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

Вот полный вывод:

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.

Что это значит и как решить?

Спасибо

4 ответа

Решение

Строит, если я добавлю --without-context --without-coroutine к b2 опциям

Из примечаний к выпуску бета-версии Boost 1.58:

Важная заметка

В скриптах сборки есть ошибка; Вы должны указать режим адреса и архитектуру для b2. Я использовал:

./b2 address-model=64 architecture=x86

чтобы проверить это.

Добавление этих флагов к b2 Команда решает проблему, не исключая context а также coroutine библиотеки (удобно, если, скажем, вы на самом деле используете эти библиотеки, как я!).

Естественно, если вы собираете 32-битные библиотеки, вы хотите добавить address-model=32 вместо.

Вы получили поддержку от репозитория git?

Если так, то я думаю, что последняя версия, доступная в git, не работает. Сегодня я тоже попытался скомпилировать его, и если вы решите упомянутые вами ошибки, вы получите другие ошибки из-за неполных файлов в целевых каталогах ( библиотека boost ptr_container не устанавливается после компиляции из источника)

Решением было загрузить последнюю версию Boost с их сайта ( http://sourceforge.net/projects/boost/files/boost/1.57.0/). После этого компиляция и установка работает корректно

В моем случае я использовал variant=release,debug аргумент командной строки, который вызывал конфликт имен.

Я добавил дополнительный аргумент --layout=tagged и проблема исчезла.

См. Также /questions/31940686/povyishenie-otladki-bibliotek-i-sborka-relizov-v-linux/49408205#49408205

Может быть, у вас есть две версии G ++ доступны в $PATH, Попробуйте запустить where g++, Если вы видите два g++, то удалите один из $PATH, А затем начните сначала весь процесс сборки. Это сработало для меня и

Другие вопросы по тегам