2

うーん!私は本当に無知なエラーの1つに遭遇しました。Python (2.7.1) をビルド/インストールし、そのバージョンの Python に対してブースト (1.44.0) をビルド/インストールしました。ブースト ビルドにエラーは見られません。すべてうまくいきます。

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) はブースト 1.44(2010) には古すぎる可能性があり、同様に python のように見えます。より新しいコンパイラまたは Linux ディストリビューション (最新の RHEL ベースの Linux..つまり RHEL、CentOs など) に移行することが最善の方法だと思います。

また、ブーストと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

そのため、ライブラリ ( libpython2.7.so) がインストールされている python2.7 の場合、boost を使用するプログラムをコンパイルするときのリンク オプションの 1 つとして/usr/lib: を使用 します。-L/usr/lib -lpython2.7

于 2014-01-07T11:47:09.770 に答える