我想为自己构建这个openNERO。根据它的建筑教程,我还用python2.7.2构建了Boost 1.48。使用Boost成功地编译了openNERO。但是当它试图链接时,ld抱怨说
CMakeFiles/OpenNERO.dir/scripting/scripting.cpp.o: In function `initOpenNero':
~/svn/opennero/trunk/source/scripting/scripting.cpp:21: undefined reference to `boost::python::detail::init_module(char const*, void (*)())'
/usr/local/lib/libboost_python.so: undefined reference to `PyModule_Create2'
/usr/local/lib/libboost_python.so: undefined reference to `PyBytes_AsString'
/usr/local/lib/libboost_python.so: undefined reference to `PyBytes_Size'
/usr/local/lib/libboost_python.so: undefined reference to `_PyUnicode_AsString'
/usr/local/lib/libboost_python.so: undefined reference to `PyUnicode_InternFromString'
collect2: ld returned 1 exit status有人能在这个问题上给我一些提示吗?谢谢~
更新1:删除
更新2:感谢这个职位。我使用nm检查init_module的签名,但是它打印:
$nm libboost_python.so.1.48.0 |c++filt|grep init_module
0002e710 T boost::python::detail::init_module(PyModuleDef&, void (*)())下面是来自源文件的片段
# if PY_VERSION_HEX >= 0x03000000
BOOST_PYTHON_DECL PyObject* init_module(PyModuleDef&, void(*)());
# else
BOOST_PYTHON_DECL PyObject* init_module(char const* name, void(*)());
# endif所以它就是Python3.x。但是我确实用参数--with-python-version=2.7构建了Boost。此外,我使用update-alternatives选择Python2.7。那么,为什么PY_VERSION_HEX仍然不正确呢?
发布于 2011-12-07 10:07:29
我记得我第一次用python3.2构建了boost,所以我删除了生成的所有文件并重新构建了boost。这次一切都是正确的。似乎旧的文件不会被覆盖。
https://stackoverflow.com/questions/8394207
复制相似问题