Невозможно создать библиотеки Boost с помощью GCC

Я использую Windows 7 64-бит и хочу скомпилировать не скомпилированные библиотеки (в частности, мне нужна файловая система) из командной строки (Я не использую MSVC). У меня есть MinGW, но читайте на веб-сайте Boost, что msys shell не поддерживается, поэтому я пытаюсь скомпилировать библиотеки из командной строки 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.лог-файл в любом месте в boost_root справочник.

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

c:/boost_1_45_0/tools/build/v2/buildconfigure.jam:145: in builds-raw
*** argument error
* rule UPDATE_NOW ( targets * : log ? : ignore-minus-n ? )
* called with: ( <pbin.v2libsregexbuildgcc-mingw-4.5.2debugaddress-model64architecture-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/buildconfigure.jam:179: in configu
re.builds
c:/boost_1_45_0/tools/build/v2/buildconfigure.jam:216: in object(
check-target-builds-worker)@409.check

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

какие предложения?

@Andre

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

gcc.compile.c++ bin.v2libsfilesystembuildgcc-mingw-4.5.2debugv3srcoperations.o
In file included from ./boost/filesystem/v3/operations.hpp:24:0,
             from libsfilesystemv3srcoperations.cpp:48:
./boost/filesystem/v3/config.hpp:16:5: error: #error Compiling Filesystem version 3 
file with BOOST_FILESYSTEM_VERSION defined != 3
libsfilesystemv3srcoperations.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.v2libsfilesystembuildgcc-mingw-4.5.2debugv3srcoperations.o"  
"libsfilesystemv3srcoperations.cpp"

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

какие здесь намеки?

4 ответов


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

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

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


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


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

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


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

bootstrap mingw

для правильной генерации b2, а затем

В2 --строени-реж="c:\boost_release" набор инструментов=ССЗ --строени-тип=полный "c:\boost_release\stage"

includes будут расположены в корневой папке boost (boost_1_58_00 / boost) и двоичных файлах в указанной папке сборки.