我正在尝试在RHEL 5.5上构建omniORB库。
我尝试使用
运行configureCC = 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位二进制文件。非常感谢对这个问题的任何见解。
答案 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下的所有二进制文件和库或您建议的前缀目录。