Подтвердить что ты не робот

Не удалось создать библиотеки Boost с GCC

Я использую 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. 

Кроме того, файл bjam.log отсутствует в каталоге boost_root.

Не обращая внимания на эту ошибку и пытаясь запустить загруженный файл 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

и т.д.. с довольно большим количеством жалоб. Настройка параметров "архитектура" и "адресная модель" не помогает.

Любые предложения?

@Andre

Следующее предложение Андре, я создал 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.

Любые подсказки здесь?

4b9b3361

Ответ 1

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

Перейдите в каталог tools\build\v2\engine\src и вызовите команду "build.bat mingw". Он создаст файл bjam.exe. Затем вы можете разместить его в% PATH% или, возможно, в корневом каталоге boost...

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

Так как я еще не могу прокомментировать, я хочу добавить, что я побежал

bootstrap mingw

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

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

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