2011-08-04 53 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