默认情况下,libboostpython.a
编译时没有-fPIC
. 但我必须制作一个 python 扩展,它是一个动态库,带有-fPIC
指向静态库的链接。如何使用from编译静态库 ( libboostpython.a
) ?-fPIC
boost.python
问问题
8126 次
2 回答
18
您可以使用几个选项:
- 从源代码编译 boost 并将额外的编译器选项传递给 bjam。例如
bjam ... cxxflags='-fPIC'
。这会将每个 boost 源文件编译为与位置无关的代码。 - 以共享库的形式使用 boost。在这种情况下,您可能希望将 boost 共享库与您的应用程序一起发布,以确保使用适当版本的 boost。您可以使用
'-Wl,-rpath,$ORIGIN'
标志链接您的可执行文件,以便当动态链接器搜索可执行文件所需的共享库时,它会在可执行文件所在的目录中查找它们。有关. _ _$ORIGIN
于 2012-09-14T08:05:12.233 回答
2
请注意,如果您在需要首先清除目标时已经运行 bjam,那么通过应用 -d+2 来打印命令也很有帮助:
./bjam clean &&
./bjam -d+2 link=static cxxflags="-fPIC" install
于 2017-12-17T14:39:21.437 回答