在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
答案 0 :(得分:3)
您需要将--export-dynamic
传递给链接器。所以从g++
开始......
g++ -Wl,--export-dynamic ...