Ld wrong symbol

3
我正在使用 boost.python 库构建应用程序。我想要进行链接操作。以下是代码:
#include <boost/python.hpp>
using namespace boost::python;

// Boost.python definitions to expose classes to Python
BOOST_PYTHON_MODULE(arrayClasses) {
}

并且为此编写makefile:

PYTHON = /usr/include/python2.7

BOOST_INC = /usr/include
BOOST_LIB = /usr/lib

TARGET = arrayClasses

$(TARGET).so: $(TARGET).o
    g++ -shared -Wl,--export-dynamic \
    $(TARGET).o -L$(BOOST_LIB) -lboost_python \
    -L/usr/lib/python2.7/config -lpython2.7 \
    -o $(TARGET).so

$(TARGET).o: $(TARGET).cpp
    g++ -I$(PYTHON) -I$(BOOST_INC) -c -fPIC $(TARGET).cpp

当我编译它时,会出现以下错误:

g++ -shared -Wl,--export-dynamic \
    arrayClasses.o -L/usr/lib -lboost_python \
    -L/usr/lib/python2.7/config -lpython2.7 \
    -o arrayClasses.so
/usr/bin/ld: arrayClasses.o: relocation R_X86_64_32 against `init_module_arrayClasses()' can not be used when making a shared object; recompile with -fPIC
arrayClasses.o: could not read symbols: Bad value
collect2: ld returned 1 exit status

有什么问题吗?
1个回答

1
你的.o目标有-fPIC,但是.so目标没有。尝试添加它看看是否有帮助。 编辑:忽略上面的内容。在我的32位Ubuntu系统上使用Python 2.6和Boost 1.44编译成功。正如Ignacio Vazquez-Abrams所指出的,你应该检查你的Python和Boost库是否编译为相同的架构。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接