2012-01-05 34 views
0

我最近建成的32位使用gcc 4.5的64位計算機上升壓1.48,使用這些指令:參考升壓1.48 __sync_fetch_and_add_4 32位共建沒有解決

./bootstrap.sh --prefix=$INSTALL_PREFIX --exec-prefix=$INSTALL_PREFIX --with-libraries=system,filesystem,python --with-python=python2 
./b2 address-model=32 architecture=x86 install 

編譯似乎罰款和庫正確放置到安裝文件夾中。但是,當我嘗試libboost_filesystem.so鏈接到我的節目,我得到以下錯誤之一:

/gpfs/wizard/flight/analysis/mori/GGSINSTALL/install/lib/libboost_filesystem.so: undefined reference to `__sync_fetch_and_add_4' 
collect2: ld returned 1 exit status 

我管理使用CMake的我的代碼;這些都是我用配置的32位編譯標誌:

-DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 

我不知道如果我做錯事的升壓配置或通過CMake的標誌我的軟件配置,但我懷疑的推動作用。我發現了一些關於這個主題的討論(例如,undefined reference to sync_fetch_and_add_4),但他們幾乎總是提到其他架構,如arm或報告解決方案,我不知道如何在boost構建中實現(例如將-march = i486傳遞給gcc,how這可以用bjam完成嗎?)。有人可以給我一些提示嗎?謝謝。

回答

0

有同樣的問題,當我在Ubuntu LTS 10.4 64

我作爲描述....因爲尼古拉·森建議跳過架構相同的標誌編譯升壓1.50.0 = x86標誌並生成庫。這對我工作

請注意,但是在Mac OS X獅子,你需要指定架構和地址模型在32位編譯