2011-03-18 40 views
1

我試圖以某種方式進行編譯,使得exec靜態鏈接到gcc。我推測運行bjam link=static runtime-link=static應該做的伎倆? 當我嘗試,我得到像下面的錯誤:bjam runtime-link = static

...failed gcc.link TGT/bin/gcc-4.5.1/debug/link-static/runtime-link-static/datagen... 
gcc.compile.c++ TGT/bin/gcc-4.5.1/release/link-static/runtime-link-static/base_data_gen.o 
gcc.link TGT/bin/gcc-4.5.1/release/link-static/runtime-link-static/datagen 
/usr/bin/ld: cannot find -lstdc++ 
/usr/bin/ld: cannot find -lm 
/usr/bin/ld: cannot find -lc 
collect2: ld returned 1 exit status 

這些當我運行bjam link=static不來。 請指教?

+1

bjam是不是給你失敗的實際命令?如果你可以使用「bjam -d + 2」運行,你可以比較鏈接器命令bjam正在執行,並從那裏,希望找出問題。 – AFoglia 2011-03-21 20:20:16

回答

0

我相信libstdC++故意不會靜態鏈接。這樣做被許多人認爲是充滿危險的(雖然我沒有真正聽說過一個很好的理由)。我不認爲你可以添加一個簡單的標誌。對於海灣合作委員會的工具集,你可以添加如

-static-libgcc -Wl,-Bstatic -lstdc++ 

你的cxxflags爲你的構建變種。