2012-02-15 80 views
0

我一直在嘗試在運行時鏈接和鏈接靜態配置中爲x64 linux構建一個小Python模塊,但不幸的是沒有成功。我在Ubuntu x64 10.04上使用Boost :: Python v.1.47,使用gcc 4.4.3和Python 2.6.5環境。錯誤鏈接與Ubuntu x64上的靜態Boost :: Python庫

我已經建立的boost ::使用Python B2沒有問題的選項設置爲手動:

toolset=gcc variant=release address-model=64 link=static runtime-link=static 

下一頁」我試圖建立使用的bjam我的模塊(pydsrc.cpp)具有相同的選項,但它在gcc鏈接程序階段失敗。下面是從構建階段的最後幾行:

... 
gcc.compile.c++ ../bin.v2/libs/python/build/gcc-4.4.3/release/address-model-64/link-static/runtime-link-static/object/function_doc_signature.o 
gcc.archive ../bin.v2/libs/python/build/gcc-4.4.3/release/address-model-64/link-static/runtime-link-static/libboost_python.a 
gcc.link.dll bin/gcc-4.4.3/release/address-model-64/link-static/runtime-link-static/pydsrc.so 
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtbeginT.o: relocation R_X86_64_32 against `__DTOR_END__' can not be used when making a shared object; recompile with -fPIC 
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtbeginT.o: could not read symbols: Bad value 
collect2: ld returned 1 exit status 

"g++" -o "bin/gcc-4.4.3/release/address-model-64/link-static/runtime-link-static/pydsrc.so" -Wl,-h -Wl,pydsrc.so -shared -Wl,--start-group "bin/gcc-4.4.3/release/address-model-64/link-static/runtime-link-static/pydsrc.o" 
"../bin.v2/libs/python/build/gcc-4.4.3/release/address-model-64/link-static/runtime-link-static/libboost_python.a" -lutil -lpthread -ldl -Wl,--end-group -static -m64 

使用msvc9工具集,我沒有什麼大的困難編譯它X64 Win7的,但我不能在Ubuntu的成功。有沒有人遇到類似的問題或知道什麼可能是一個解決方案?任何幫助或線索如何正確地建立模塊將不勝感激。

乾杯

回答

1

嘗試包括PIC(與位置無關的代碼)經由CXXFLAGS指令編譯的標誌。所以在你的情況是這樣的:

toolset=gcc variant=release address-model=64 cxxflags=-fPIC link=static runtime-link=static 
+0

我試過這也與重新編譯增強庫與fPIC - 不幸沒有運氣。我已經放棄並且放棄了編譯我的模塊的靜態版本,但是感謝你的回答。 – stx 2012-05-29 11:37:33