我正在尝试通过python使用网络http://www.metarecognition.com/libmr-license/上提供的库。作者提供了C代码和swig接口文件(* .i)。用户提供的Make文件不提供正确的python编译。所以我试着手动编译swig。我在编译主库后使用以下命令。
swig -python weibull.i
gcc -c ../libMR/weibull.c weibull_wrap.c -I/usr/include/python2.4 -fPIC
ld -shared weibull.o weibull_wrap.o -o _weibull.so
这些步骤很好。但是当我尝试通过python导入它时,我遇到了以下错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "pyweibullw.py", line 29, in <module>
_pyweibullw = swig_import_helper()
File "pyweibullw.py", line 21, in swig_import_helper
import _pyweibullw
ImportError: /usr/lib/python2.4/dist-packages/_pyweibullw.so: undefined symbol: Py_InitModule4
有人可以告诉我什么错了吗?我是否错过了gcc的一些标志?我已经尝试使用像-m64,-arch x86_64这样的标志的gcc,但它似乎没有任何区别。 仅供参考,我正在使用以下系统
bash-$:uname -a
Linux 2.6.32-5-amd64 #1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64 GNU/Linux