2011-08-02 91 views
5

我要瘋了...我目前正在嘗試在osx snow leopard上將我的項目升級從1.44.0升級到1.47.0.-我想用下面的命令來構建它:OSX Snow Leopard:爲32位和64位構建boost 1.47.0

./b2 macosx-version=10.6 link=static address-model=32_64 threading=multi stage 

這裏我期望它給了我一個靜態的,身材肥胖,支持I386作爲藏漢x86_64的。無論如何,它顯然不會,因爲如果我查詢生成的庫的lipo -info,他們都是x86_64.-我能做些什麼來解決這個問題?難道是構建腳本被破壞?

+0

我相信你需要明確指定'toolset = darwin';然而,作爲一個健全性檢查,運行相同的'b2'調用加上'-n'參數併發佈一個如何調用編譯器的樣本(具體來說,傳遞哪些參數)。 – ildjarn

+0

嗯-n沒有做任何事,它應該做什麼?達爾文不會改變任何東西(我很確定它是osx的默認選項),謝謝! – moka

+0

'-n'告訴bjam/b2輸出它將執行的編譯器/鏈接器命令,而不實際執行它們。你是說沒有計劃輸出嗎? – ildjarn

回答

2

我得到了它通過使用此版本的工作:

./b2鏈接=靜態線程=多工具集=達爾文CXXFLAGS = 「 - 拱i386的-arch x86_64的」 MacOSX的版本= 10.6舞臺

2

這對我來說很有用。

./b2 link=static threading=multi toolset=darwin cxxflags="-arch i386 -arch x86_64" target-os=darwin address-model=32_64 stage 
1

我發胖二進制建設加速1.49 MacOSX上10.6的唯一方法是使用兩個參數架構= x86和地址模型= 32_64。

1

我已經嘗試了所有很多選項,但都沒有生成32位和64位體系結構的通用二進制文件。終於爲我工作的是這一個:

./b2 threading=multi toolset=darwin architecture=x86 target-os=darwin address-model=32_64 stage 

這是在山獅增加1.51.0。

0

您應該添加選項「架構」,例如:

./b2 macosx-version=10.6 link=static address-model=32_64 architecture=combined threading=multi stage 
0

我有建築物32/64合併版本太問題,最終使出分別建立兩個(我不得不添加的CXX標記「-arch i386」到32位版本)並使用lipo來合併它們。例如:

./bjam link=static release install address-model=32 --prefix=$prefix_dir-x86" --python-buildid=2.7 python=2.7 --with-python cxxflags="-fPIC -Wfatal-errors -arch i386" -s NO_BZIP2=1 -s NO_ZLIB=1 
./bjam link=static release install address-model=64 --prefix=$prefix_dir-x64" --python-buildid=2.7 python=2.7 --with-python cxxflags="-fPIC -Wfatal-errors" -s NO_BZIP2=1 -s NO_ZLIB=1 
lipo $prefix_dir-x86/lib/libboost_python-2_7.a $prefix_dir-x64/lib/libboost_python-2_7.a -output $prefix_dir-universal/libboost_python-2_7.a -create 

既然我仍然有64位二進制文​​件(當我請32位)之前,我補充說:「-arch i386的」,我懷疑,在那裏與bjam的/ B2的生成腳本問題的32位二進制蘋果系統。