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


但是,如果我加载“数学”之类的模块,它将死于:

undefined symbol: PyInt_FromLong

最佳答案

您需要将--export-dynamic传递给链接器。所以来自g++

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

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

10-09 20:24