在Ubuntu x64上与静态Boost :: Python库链接时出错

时间:2012-02-15 20:55:16

标签: python gcc boost linker ubuntu-10.04

我一直在尝试在运行时链接和链接静态配置中为x64 linux构建一个小的Python模块,但遗憾的是没有成功。我在Ubuntu x64 10.04上使用Boost :: Python v.1.47,使用gcc 4.4.3和Python 2.6.5环境。

我使用 b2 手动构建Boost :: Python,并且选项设置为:

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工具集的Win7 x64上我编译它没有遇到什么大的困难,但我无法在Ubuntu上取得成功。有没有人遇到类似的问题或知道什么可能是一个解决方案?任何帮助或线索如何正确构建模块将不胜感激。

干杯

1 个答案:

答案 0 :(得分:1)

尝试通过cxxflags指令包含PIC(位置无关代码)编译标志。所以在你的情况下,如:

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