有没有人曾经在RHEL上构build过omniORB?

我正在尝试在RHEL 5.5上构buildomniORB库。

我试着运行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') 

所以,我试图使用英特尔C ++编译器,而不是

 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') 

操作系统是RHEL 5.5与x86_64体系结构,我试图构build32位二进制文​​件。 希望对此问题有所了解。

这是因为omniidl是作为Python扩展模块实现的。 您正在使用的Python可执行文件是64位可执行文件,因此无法加载32位库。

看看这个http://objectmix.com/object/196129-compiling-omniorb-32bits-libraries-64bits-machine-suse.html

我终于找到了使用Intel编译器在Linux上构建omniORB的魔力组合。

你可以看到在哪里抱怨'__cxa_pure_virtual'没有找到,这发生在gcc下,因为它找不到一个名为libstdc ++的库

所以,根据你使用的编译器,使得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 --prefix=/opt/omniInst --build=i686-pc-linux-gnu

运行gmake,然后执行gmake install,你会在omniInst或你建议的前缀目录下看到所有的二进制文件和库文件。