在Python中加载C共享库期间的OSError(未定义符号:checkedCalloc)

时间:2014-03-31 15:36:44

标签: python c++ c python-2.7 import

我想就以下问题寻求帮助。

一些理论:我使用的是Ubuntu 12.04,python2.7,我正在尝试在python中加载C共享库(libFSToolbox.so)。我想使用PyFeat作为FEAST的python包装器。我编译了FEAST和FEAST先决条件MIToolbox。有问题的libFSToolbox.so是编译FEAST的结果

......和现实: 建设和一切都很顺利,但当我试图使用盛宴时,导入过程中存在问题

File "test.py", line 2, in <module>
from feast import *
File "/usr/local/lib/python2.7/dist-packages/feast.py", line 25, in <module>
libFSToolbox = c.CDLL("/home/peterd/VUT/ML/FEAST-master/libFSToolbox.so"); 
File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /home/peterd/VUT/ML/FEAST-master/libFSToolbox.so: undefined symbol:     
checkedCalloc

我已将c库编译为x64($(MAKE)libFSToolbox.so&#34; CXXFLAGS = -O3 -fPIC -m64&#34;)并且我的python解释器也是64(尝试:python&gt;&gt;平台。 machine()回答:&#39; x86_64&#39;)

感谢您的时间

1 个答案:

答案 0 :(得分:0)

我认为问题是如何在FEAST的Makefile中给出链接器的选项。

有两个选项

1)在Makefile中更改FEAST的行

这 LINKER = gcc

LINKER = ld

2)如果你想使用gcc链接 更改Makefile的第47行

$(LINKER)-lMIToolbox -lm -L $(MITOOLBOXPATH)-shared -o libFSToolbox.so $(objects)

$(LINKER)-L $(MITOOLBOXPATH)-shared -o libFSToolbox.so $(objects)-lMIToolbox -lm