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