2

RHEL5.5でomniORBライブラリを構築しようとしています。

configureを実行してみました

CC=gccおよびCXX=g++およびPYTHON=bin / omnipython

私はそれが不平を言うこの問題に遭遇します

gmake[3]: Entering directory `/home/local/NT/jayanthv/omniORB-4.1.4/src/lib/omniORB'
../../../bin/omniidl -bcxx -p../../../src/lib/omniORB -Wbdebug -Wba -p../../../src/lib/omniORB -Wbdebug -v -ComniORB4 ../../../idl/Naming.idl


omniidl: ERROR!

omniidl: Could not open IDL compiler module _omniidlmodule.so
omniidl: Please make sure it is in directory /home/local/NT/jayanthv/omniORB-4.1.4/lib
omniidl: (or set the PYTHONPATH environment variable)

omniidl: (The error was '/home/local/NT/jayanthv/omniORB-4.1.4/lib/_omniidlmodule.so: wrong ELF class: ELFCLASS64')

そこで、代わりにIntelC++コンパイラを使用してみました。

export CXX=/opt/intel/Compiler/11.1/080/bin/ia32/icc
export LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/080/lib/ia32
export PYTHON=/home/local/NT/jayanthv/omniORB-4.1.4/bin/omnipython

しかし、今では../../../bin/omniidl -bcxx -p ../../../ src / lib / omniORB -Wbdebug -Wba -p../../..について文句を言います。 / src / lib / omniORB -Wbdebug -v -ComniORB4 ../../../idl/Naming.idl

omniidl: ERROR!

omniidl: Could not open IDL compiler module _omniidlmodule.so
omniidl: Please make sure it is in directory /home/local/NT/jayanthv/omniORB-4.1.4/lib
omniidl: (or set the PYTHONPATH environment variable)

omniidl: (The error was '/home/local/NT/jayanthv/omniORB-4.1.4/lib/_omniidlmodule.so: undefined symbol: __cxa_pure_virtual')

OSはx86_64アーキテクチャのRHEL5.5であり、32ビットバイナリを構築しようとしています。この問題についての洞察をいただければ幸いです。

4

2 に答える 2

3

これは、omniidlがPython拡張モジュールとして実装されているためです。使用しているPython実行可能ファイルは64ビットの実行可能ファイルであるため、32ビットのライブラリをロードできません。

これをチェックしてくださいhttp://objectmix.com/object/196129-compiling-omniorb-32bits-libraries-64bits-machine-suse.html

于 2012-08-27T15:19:38.153 に答える
0

私はついに、Intelコンパイラを使用してLinux上でomniORBを構築するための魔法の組み合わせを見つけました。

'__cxa_pure_virtual'が見つからないと文句を言うところがわかります。これは、libstdc ++というlibが見つからないため、gccで発生します。

したがって、使用しているコンパイラを作成するCC="icc -lstdc++"か、それに応じて。CC="gcc -lstdc++"CXXについても同じようにします(g ++を使用している場合は、g ++で指定します)

そしてPythonには、python1.5であるomnipythonを使用しました。PYTHON=bin/omnipython

これは、omniORBルートパスを基準にして検索していることを意味します。

'間違ったELFクラス:ELFCLASS64'について不平を言うところを見ることができます。これは、64ビットリンカーを使用して32ビットバイナリをリンクしようとしているためです。

したがって、コンパイラとリンカのフラグを32に強制します。

CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32

完了したら、configureを実行します

./configure --prefix=/opt/omniInst --build=i686-pc-linux-gnu

gmakeを実行してからgmakeinstallを実行すると、omniInstまたは提案したプレフィックスディレクトリの下にすべてのバイナリとライブラリが表示されます。

于 2012-09-05T20:18:01.240 に答える