2

啊! 我遇到了其中一个我真的一无所知的错误。我已经构建/安装了 Python (2.7.1),并且针对该版本的 python 构建/安装了 boost (1.44.0)。我在我的 boost 构建中没有看到任何错误,一切正常。

当我开始构建具有很多 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

我四处搜索,但没有什么真正作为解决方案出现。我在 Windows 上没有看到这个问题。感谢是否有人可以分享他们在 Linux (RHEL5) 上遇到类似问题的经验,以及他们是如何克服它的。我可以尝试针对旧版本的 Python(2.6.4 或更早版本)构建 boost-1.44.0。

提前感谢您的时间和兴趣。-T。

4

3 回答 3

1

为什么不使用存储库和 rpm/yum 安装一切?在我看来,gcc 4.1.2(2007) 对于 boost 1.44(2010) 来说可能太旧了,python 也是如此。我认为迁移到更新的编译器或 linux 发行版(最新的基于 RHEL 的 linux..ie RHEL,CentOs exc..)升级是要走的路。

您是否还对 boost 和 python 运行了 make check 以查看它们是否正确编译?

于 2012-08-24T07:42:43.133 回答
1

我想我已经解决了这个问题。这基本上是在增强构建期间添加参数linkflags="-m64 -Wl,-E"的问题。它似乎解决了这个问题。

于 2012-08-25T07:38:56.303 回答
0

添加-lpython<version>诸如-lpython2.7解决我的问题。

注意:必须使用指定libpython<version>的路径libpython2.7.so-L

so for python2.7 whose library (libpython2.7.so) is installed at /usr/lib would use: -L/usr/lib -lpython2.7 as one of the linking option when compiling program that uses boost

于 2014-01-07T11:47:09.770 回答