2011-08-04 56 views
6

所以我知道boost库主要是仅包含header的,但有一些需要编译,例如Boost.Thread。在达尔文中,我如何编译这些并传递-m32标志,以便它们可以编译为32位(i386)二进制文件?这是我从未听说过的Jamroot,我不确定从哪里开始。传递编译器标志以提升需要编译的库(例如Thread)

说明:我没有问如何使用-m32标志编译程序并使用boost库。我在问如何用-m32标志自己编译Boost库。

+0

http://www.boost.org/doc/libs/1_47_0/more/getting_started/unix-variants.html – Arunmu

+0

-1对于没有阅读官方介绍性文件,抱歉。 –

+0

@ArunMu,是的,我知道,我已经看过那个页面。它不回答我的问题。有几个标志可以传递给b2,但是它们都不允许你改变体系结构。我试着看Jamroot文件,但我看不到任何地方指定像这样的编译器标志。 – eeeeaaii

回答

5

要指定要编译的体系结构,请在调用b2时指定architecture功能。

要指定不具有内置功能的编译器选项,请在调用b2时指定cxxflags功能。

要指定尚未具有内置功能的链接器选项,请在调用b2时指定linkflags功能。

所有这些都列在the Boost.Build docs

+2

谢谢。事实上我终于明白b2和bjam在这里确实有帮助 - 我用diff来证实这一点。为什么有两个相同版本的可执行文件,其中一个几乎完全没有文档(b2)?这对我来说毫无意义。官方文件真的很难解析我 - 这更有意义:http://www.highscore.de/cpp/boostbuild/。感谢您的帮助。 – eeeeaaii

+0

@eeeeaaii:'b2'是'bjam'的新官方名称。也就是说,它们是一样的,但'bjam'这个名字现在已经过时了。 – ildjarn

+1

什么? - 难怪我过去两个月都很困惑! – meowsqueak

1

根据我的理解,如果我正确阅读文档,构建特定boost结构的方法是使用b2的“address-model = xx”选项。

实例:

b2 install toolSET=msvc-9.0 link=shared variant=release address-model=64 

b2 install toolSET=msvc-9.0 link=shared variant=release address-model=32 

希望有所帮助。

问候,

-RMWChaos

编辑:找到另一个线程SO提供相同的答案here