唉!我遇到了其中一个我真无能为力的错误。我已经构建/安装了Python(2.7.1),并且我已经针对该版本的python构建/安装了boost(1.44.0)。我没有看到我的助推器构建中出现任何错误,一切都很顺利。
当我转向执行具有很多boost依赖的应用程序构建时,在我的C ++代码中,我确实调用了Py_Init(...)我收到以下错误:
Linking CXX executable ../../../myapp_exec
../../../../../config/cmake/platforms/../../../../3rdparty/2012/<pack>/rh5_x86_64_gcc-4.1.2/boost-1.44.0/lib/libboost_python-gcc41-1_44.so: undefined reference to `Py_InitModule4' collect2: ld returned 1 exit status
gmake[2]: *** [myapp_exec] Error 1
我用Google搜索,但实际上并没有作为解决方案。 我在Windows上看不到这个问题。感谢是否有人可以分享他们在Linux(RHEL5)上遇到类似问题的经历,以及他们如何克服它。我可以尝试针对旧版本的Python(2.6.4或更早版本)构建boost-1.44.0。
提前致谢,感谢您的时间和利益。 -T。
答案 0 :(得分:1)
为什么不使用存储库和rpm / yum安装一切?它看起来像gcc 4.1.2(2007)可能对于1.44(2010)而言太老了,与python类似。我认为转移到更新的编译器或Linux发行版(最新的基于RHEL的linux ..即RHEL,CentOs exc ..)升级是可行的方法。
你是否也在boost和python上运行make check以查看它们是否正确编译?
答案 1 :(得分:1)
我想我已经解决了这个问题。这基本上是在boost构建期间添加参数 linkflags =“ - m64 -Wl,-E”的问题。它似乎解决了这个问题。
答案 2 :(得分:0)
添加-lpython<version>
,例如-lpython2.7
解决了我的问题。
注意:必须使用libpython<version>
libpython2.7.so
的路径,例如-L
因此对于libpython2.7.so
安装了库(/usr/lib
)的python2.7,将使用:
-L/usr/lib -lpython2.7
作为编译使用boost