如何使用boost.python中的-fPIC编译静态库

sim*_*mon 14 c c++ python boost boost-python

默认情况下,libboostpython.a编译时没有-fPIC.但是我必须创建一个python扩展,它是一个动态库,带有-fPIC静态库的链接.如何libboostpython.a-fPICfrom 编译静态库()boost.python

Max*_*kin 17

您可以使用几种选项:

  • 从源代码编译boost并将额外的编译器选项传递给bjam.例如bjam ... cxxflags='-fPIC'.这会将每个boost源文件编译为与位置无关的代码.
  • 以共享库的形式使用boost.在这种情况下,您可能希望将boost共享库与应用程序一起发布,以确保使用适当的boost版本.您可以将可执行文件与'-Wl,-rpath,$ORIGIN'flag 链接,这样当动态链接器搜索可执行文件所需的共享库时,它会在可执行文件所在的目录中查找它们.见男子ld.so关于更多的细节$ORIGIN.