2009-09-24 34 views
0

this question的後續問題中,我的公司環境缺少libpython2.6.so共享對象,但有libpython2.6.a文件。有沒有一種方法可以在libpython2.6.a中編譯,同時保留libpython2.6.a中的符號,以便動態庫可以在運行時找到這些符號?如何鏈接到libpython.a,例如運行時鏈接程序可以找到libpython.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 

回答

2

你需要傳遞--export-dynamic到鏈接器。所以從g++這是...

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