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

2024-06-17 11:13:51 发布

您现在位置:Python中文网/ 问答频道 /正文

默认情况下,libboostpython.a编译时不使用-fPIC。但是我必须做一个python扩展,它是一个带有-fPIC链接到静态库的动态库。 如何使用boost.python中的-fPIC编译静态库(libboostpython.a)?


Tags: 链接静态情况动态boostfpiclibboostpython
2条回答

您可以使用两个选项:

  • 从源代码编译boost并将额外的编译器选项传递给bjam。E、 g.bjam ... cxxflags='-fPIC'。这将把每个boost源文件编译为独立于位置的代码。
  • 以共享库的形式使用boost。在这种情况下,您可能希望将boost共享库与应用程序一起提供,以确保使用了适当版本的boost。您可以使用'-Wl,-rpath,$ORIGIN'标志链接可执行文件,以便当动态链接器搜索可执行文件所需的共享库时,它在可执行文件所在的目录中查找这些库。有关$ORIGIN的详细信息,请参见man ld.so

注意,如果您已经运行了bjam,那么首先需要清除目标 应用-d+2也有助于打印命令:

./bjam clean && 
./bjam -d+2 link=static cxxflags="-fPIC" install

相关问题 更多 >