python - 如何链接 libpython.a 以便运行时链接器可以找到 libpython.a 中的所有符号?

标签 python gcc g++

this question 的后续问题中,我的企业环境缺少 libpython2.6.so 共享对象,但有 libpython2.6.a 文件。有没有一种方法可以在 libpython2.6.a 中进行编译,同时保留 libpython2.6.a 中的符号,以便动态库可以在运行时找到这些符号?

我当前使用静态库的编译如下所示:

g++ -I/usr/CORP/pkgs/python/2.6.2/include/python2.6 \
    ~/tmp.cpp -pthread -lm -ldl -lutil \
    /usr/CORP/pkgs/python/2.6.2/lib/python2.6/config/libpython2.6.a \
    -o tmp.exe

但是,如果我加载像“math”这样的模块,它就会消失:

undefined symbol: PyInt_FromLong

最佳答案

您需要将 --export-dynamic 传递给链接器。所以从 g++ 来看,它是......

g++ -Wl,--export-dynamic ...

关于python - 如何链接 libpython.a 以便运行时链接器可以找到 libpython.a 中的所有符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472828/

相关文章:

c++ - 我怎样才能使 Eclipse C.D.T.认识 C++11 的特性?

python - 如何创建不针对本地时间进行调整的 unix 时间戳?

Python Plotly 打印两个图表

Python Selenium : Microsoftonline login not working correctly

python - 在python中将标题写入excel文件

c++ - 在 C++ 中重用内存

c++ - 如何将 constexpr 指针设置为物理地址

c++ - 将固定大小内存边界上的 native 代码与 GCC/G++/AS 对齐?

创建静态 Mac OS X C 构建

c++ - 代码块和 g++ 错误 "is private"