默认情况下,libboostpython.a
是在没有-fPIC
的情况下编译的。但我必须创建一个python扩展,它是一个动态库,其中-fPIC
链接到静态库。如何使用libboostpython.a
中的-fPIC
编译静态库(boost.python
)?
您可以使用几种选项:
bjam ... cxxflags='-fPIC'
。这会将每个boost源文件编译为与位置无关的代码。'-Wl,-rpath,$ORIGIN'
标志链接,以便当动态链接器搜索可执行文件所需的共享库时,它会在可执行文件所在的目录中查找它们。有关man ld.so的更多详细信息,请参阅$ORIGIN
。请注意,如果您在首先需要清除目标后已经运行了bjam,那么通过应用-d + 2打印命令也很有帮助:
./bjam clean &&
./bjam -d+2 link=static cxxflags="-fPIC" install