Невозможно собрать библиотеки Boost с GCC - PullRequest
13 голосов
/ 14 марта 2011

Я использую 64-разрядную версию Windows 7 и хочу скомпилировать не скомпилированные библиотеки (в частности, мне нужна файловая система) из командной строки (я не использую MSVC).У меня есть MinGW, но я прочитал на веб-сайте Boost, что оболочка MSYS не поддерживается, поэтому я пытаюсь скомпилировать библиотеки из командной строки Windows.

Прежде всего, запуск bootstrap.bat приводит к следующемуошибка:

Building Boost.Jam build engine 
'cl' is not recognized as an internal or external command, 
operable program or batch file. 

Failed to build Boost.Jam build engine. 
Please consult bjam.log for furter diagnostics. 

You can try to obtain a prebuilt binary from 

   http://sf.net/project/showfiles.php?group_id=7586&package_id=72941

Also, you can file an issue at http://svn.boost.org
Please attach bjam.log in that case. 

Плюс, в каталоге boost_root нет файла bjam.log.

Не обращая внимания на эту ошибку и пытаясь запустить загруженный файл bjam.exe, я получаю другойошибка:

c:/boost_1_45_0/tools/build/v2/build\configure.jam:145: in builds-raw
*** argument error
* rule UPDATE_NOW ( targets * : log ? : ignore-minus-n ? )
* called with: ( <pbin.v2\libs\regex\build\gcc-mingw-4.5.2\debug\address-model64\architecture-x86>has_icu.exe :  : ignore-minus-n : ignore-minus-q )
* extra argument ignore-minus-q
(builtin):see definition of rule 'UPDATE_NOW' being called
c:/boost_1_45_0/tools/build/v2/build\configure.jam:179: in configu
re.builds
c:/boost_1_45_0/tools/build/v2/build\configure.jam:216: in object(
check-target-builds-worker)@409.check

и т. д.с довольно большим количеством жалоб.Установка параметров «архитектура» и «модель адреса» не помогает.

Есть предложения?

@ Андре

Следуя совету Андре, я создал minGW-bjam, которыйработал полтора часа и собрал большинство библиотек, но не ту, которая мне нужна в данный момент: Файловая система.Попытка скомпилировать только файловую систему, указав версию 2 с define="BOOST_FILESYSTEM_VERSION=2" и --disable-filesystem3, не помогает.Я получаю следующую ошибку:

gcc.compile.c++ bin.v2\libs\filesystem\build\gcc-mingw-4.5.2\debug\v3\src\operations.o
In file included from ./boost/filesystem/v3/operations.hpp:24:0,
             from libs\filesystem\v3\src\operations.cpp:48:
./boost/filesystem/v3/config.hpp:16:5: error: #error Compiling Filesystem version 3 
file with BOOST_FILESYSTEM_VERSION defined != 3
libs\filesystem\v3\src\operations.cpp:647:26: warning: 
'<unnamed>::create_symbolic_link_api' defined but not used

"g++"  -ftemplate-depth-128 -O0 -fno-inline -Wall -g -DBOOST_ALL_NO_LIB=1 -
DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_FILESYSTEM_VERSION=2 -DBOOST_SYSTEM_DYN_LINK=1  -
I"." -c -o "bin.v2\libs\filesystem\build\gcc-mingw-4.5.2\debug\v3\src\operations.o"  
"libs\filesystem\v3\src\operations.cpp"

и т. Д.с большим количеством ...failed заявлений.

Есть здесь какие-нибудь намеки?

Ответы [ 4 ]

29 голосов
/ 22 декабря 2011

Это легко. Просто используйте "bootstrap.bat gcc", чтобы выбрать GCC

9 голосов
/ 14 марта 2011

Сценарий начальной загрузки предполагает наличие компилятора msvc.Но вы можете собрать bjam вручную без сценария начальной загрузки:

Войдите в каталог tools \ build \ v2 \ engine \ src и вызовите "build.bat mingw".Это создаст bjam.exe.Затем вы можете поместить его в свой% PATH% или, возможно, в корневой каталог повышения ...

Если честно, я обычно собираю bjam вот так с компилятором msvc и использую этот "msvc-bjam" для сборкимои библиотеки повышения Mingw.

2 голосов
/ 15 марта 2011

Итак ... первая часть проблемы была решена предложением Андре. Вторая часть была решена установкой переменной BOOST_FILESYSTEM_VERSION равной 3 везде (ошибка выше жалуется на несовместимость с тем, что установлено в файле user.hpp). Хотя это не опция по умолчанию для Boost 1.45, которую я использую, это единственное, что работает (то есть bjam хочет скомпилировать версию 3, несмотря ни на что). Так что теперь у меня есть версия 3 библиотеки файловой системы и версия 2 для всех остальных, но на данный момент это не проблема.

У меня проблема с использованием Boost с библиотеками OpenCV и Eigen, хотя ... к следующему вызову;)

0 голосов
/ 22 мая 2015

Поскольку я пока не могу комментировать, я хочу добавить, что я запустил

bootstrap mingw

, чтобы правильно сгенерировать b2, а затем

b2 --build-dir = "c: \ boost_release" toolset = gcc --build-type = complete "c: \ boost_release \ stage"

Включения будут расположены на вашемувеличить корневую папку (boost_1_58_00 / boost) и ваши двоичные файлы в указанной папке сборки.

...