无法使用GCC构建Boost库

vko*_*tor 13 gcc boost bjam

我正在使用Windows 7 64位,并希望从命令行编译非预编译库(具体来说,我需要Filesystem)(我不使用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. 
Run Code Online (Sandbox Code Playgroud)

另外,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
Run Code Online (Sandbox Code Playgroud)

有很多抱怨.设置"架构"和"地址模型"选项没有帮助.

有什么建议?

@Andre

按照Andre的建议,我创建了运行了一个半小时的minGW-bjam并构建了大部分库,但不是我现在需要的库:Filesystem.试图只编译文件系统,指定版本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"
Run Code Online (Sandbox Code Playgroud)

等等有很多...failed陈述.

这里有什么提示吗?

dom*_*zer 29

这很简单.只需使用"bootstrap.bat gcc"选择GCC即可

  • 工作,但有必要将"C:\ MinGW\bin"放在Windows的PATH环境变量中并事先重新启动,否则_gcc_命令是未知的. (3认同)

And*_*dré 9

引导脚本假定msvc编译器可用.但是您可以在没有引导脚本的情况下手动构建bjam:

进入tools\build\v2\engine\src目录并调用"build.bat mingw".它将创建一个bjam.exe.然后,您可以将它放在%PATH%中,也可以放在root boost目录中......

老实说,我通常使用msvc编译器构建这样的bjam,并使用这个"msvc-bjam"来构建我的mingw boost库.

  • 现在(boost v1.63)目录是\ tools\build\src\engine.命令是build.bat gcc.bjam.exe和b2.exe位于\ tools\build\src\engine\bin.ntx86中 (2认同)