Boost构建失败:'<pstage/lib>libboost_system.so.1.58.0'名称冲突。

10

我正在尝试通过以下方式进行Boost源代码构建:

git clone --recursive https://github.com/boostorg/boost.git
cd boost
./bootstrap
./b2 link=shared threading=multi variant=release --without-mpi

这会显示以下错误信息:

error: Name clash for '<pstage/lib>libboost_system.so.1.58.0'
error: 
error: Tried to build the target twice, with property sets having 
error: these incompabile properties:
error: 
error:     -  none
error:     -  <address-model>64 <architecture>x86
error: 
error: Please make sure to have consistent requirements for these 
error: properties everywhere in your project, especially for install
error: targets.

这个问题出现在develop分支和master分支上。有什么方法可以修复这个错误吗?提前感谢。

3个回答

13
Boost 1.58测试版发布说明中得知:

重要提示

构建脚本存在问题,必须向b2指定地址模式和架构。我使用了以下命令:

./b2 address-model=64 architecture=x86

进行测试。

b2命令中添加这些标志可以解决问题,而无需排除contextcoroutine库(如果您实际上使用这些库,像我一样非常方便)。

当然,如果您正在构建32位库,则应添加address-model=32


那么这与先前的答案有所不同,是因为使用了“--address-model”而不是“address-model”吗? - user14717
5
@NickThompson说:“--address-model”和“--architecture”似乎没有起作用——正确的指定选项的方法是不带破折号。(这就解释了为什么添加带破折号的选项没有效果!) - HighCommander4

4

当前的git主版本存在一个错误。

作为一种解决方法,可以在命令行上明确指定地址模型和架构选项:

./b2 link=shared threading=multi variant=release --without-mpi address-model=64 architecture=x86

我运行了 'git pull' 并尝试了这个,但对我来说仍然出现了相同的错误信息... - user14717
应该是 address-model=64,而不是 --address-model=64(即没有前导双破折号)。 - Tanz87

3

我能够按照https://dev59.com/LoXca4cB1Zd3GeqPONeG#27885628上的建议构建。 我正在编译分支boost-1.57.0,并且我开始编译分支boost-1.56.0,也顺利通过了这个点。 总的来说,我运行了以下命令:

git co boost-1.57.0;
./bootstrap.sh --prefix=/home/me/builds/development;
./b2 --prefix=/home/me/builds/development -j9 --without-context --without-coroutine;

7
我猜这样就避免了编译问题,但我不理解为什么没有人知道如何构建整个boost库。我宁愿不这样做。 - user14717

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接