在windows中使用cygwin64终端构建Boost1.61.0

时间:2016-09-08 09:19:54

标签: c++ boost

我今天尝试用windows10中的cygwin64终端构建boost1.61.0的二进制文件。我一步一步跟着boost official instruction,一切正常,直到最后一步./b2 install 然后系统返回错误消息,如下所示:

/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/kernel/modules.jam:107: in modules.call-in
ERROR: rule "<abi>ms" unknown in root module.
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/util/indirect.jam:98: in indirect.call
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/build/targets.jam:1054: in evaluate-requirements
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/build/targets.jam:1112: in common-properties2
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/build/targets.jam:977: in targets.common-properties
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/build/targets.jam:1303: in alias-target-class.generate
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0
/boostcpp.jam:432: in build-multiple
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0
/boostcpp.jam:394: in class@top-level-target.generate
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/build/targets.jam:774: in generate-really
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/build/targets.jam:746: in class@main-target.generate
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/build-system.jam:714: in load
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/kernel/modules.jam:295: in import
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/tools
/build/src/kernel/bootstrap.jam:139: in boost-build
/cygdrive/d/cygwin64/bin/%HOMEDRIVE%%HOMEPATH%/boost_1_61_0/
boost-build.jam:17: in module scope

以下是bootstrap.log

###
### Using 'gcc' toolset.
###
rm -rf bootstrap
mkdir bootstrap
gcc -o bootstrap/jam0 command.c compile.c constants.c debug.c
execcmd.c frames.c function.c glob.c hash.c hdrmacro.c headers.c
jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c
output.c parse.c pathsys.c regexp.c rules.c scan.c search.c subst.c
timestamp.c variable.c modules.c strings.c filesys.c builtins.c
class.c cwd.c native.c md5.c w32_getreg.c modules/set.c
modules/path.c modules/regex.c modules/property-set.c
modules/sequence.c modules/order.c execunix.c fileunix.c pathunix.c
./bootstrap/jam0 -f build.jam --toolset=gcc --toolset-root= clean
...found 1 target...
...updating 1 target...
[DELETE] clean
...updated 1 target...
./bootstrap/jam0 -f build.jam --toolset=gcc --toolset-root=
...found 158 targets...
...updating 2 targets...
[COMPILE] bin.cygwinx86_64/b2.exe
[COPY] bin.cygwinx86_64/bjam.exe
...updated 2 targets...

cygwin64的版本是4.9.3

有人可以告诉我发生了什么以及如何纠正吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我一直使用boost,但我从不需要安装它。所以我会建议我的方式,你可以选择(注意,我正常使用msvc编译器,所以我用gcc替换了每个msvc,如果我错了请纠正我。如果你想使用msvc ,记得运行msvc命令提示符或在任何事情之前运行vcvarsall.bat):

你运行bootstrap:

bootstrap.bat gcc

然后你编译:

b2 --build-type=complete stage runtime-link=static --toolset=gcc

您是否想要静态是您的选择。现在,您可以创建一个符号链接到您想要的位置。无需在任何地方安装。

由于符号链接在Windows中是令人讨厌的,所以我打包了一些软件,通​​过简单的右键单击即可轻松实现。 Here you can download it