如何链接libpython.a,以便运行时链接程序可以找到libpython.a中的所有符号?

时间:2009-09-24 16:32:26

标签: 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

1 个答案:

答案 0 :(得分:3)

您需要将--export-dynamic传递给链接器。所以从g++开始......

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