有没有人在RHEL上建立omniORB?

时间:2012-08-27 13:34:11

标签: c++ linux rhel omniorb

我正在尝试在RHEL 5.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')

所以,我尝试使用英特尔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')

操作系统是带有x86_64架构的RHEL 5.5,我正在尝试构建32位二进制文​​件。非常感谢对这个问题的任何见解。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

我终于找到了使用英特尔编译器在Linux上构建omniORB的神奇组合。

你看到它抱怨的地方' __ cxa_pure_virtual'没有找到,这发生在gcc下,因为它无法找到一个名为libstdc ++的库

因此,根据您使用的编译器,设置CC="icc -lstdc++"CC="gcc -lstdc++"。对CXX执行相同操作(如果使用g ++,请在g ++中指定)

对于Python,我使用的是omnipython,它是一个python1.5,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下的所有二进制文件和库或您建议的前缀目录。