有没有人在 RHEL 上构建过omniORB?

Posted

技术标签:

【中文标题】有没有人在 RHEL 上构建过omniORB?【英文标题】:Has anyone ever built omniORB on RHEL? 【发布时间】:2012-08-27 13:34:10 【问题描述】:

我正在尝试在 RHEL 5.5 上构建omniORB 库。

我尝试使用

运行配置

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

所以,我尝试使用 Intel 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 位二进制文​​件。希望能深入了解这个问题。

【问题讨论】:

提到的SO是否在提到的目录中?在您的第一个变量列表中,您真的没有 PYTHON 定义的完整路径吗?如果您还没有发送电子邮件到omniorb 邮件列表,您可能还想发送电子邮件。 【参考方案1】:

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

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

【讨论】:

嘿萨蒂什,你指的是omnipython吗? 我说的是python,但也要确保你同时使用32位python和omnipython。你可以在 /usr/local/bin 目录下编译 32bit python 并根据路径改变 有没有办法检查python可执行文件是32位还是64位? python -c '导入平台;打印platform.architecture()' 我安装了 32 位 python 并传递了 32 位可执行文件的路径,但我仍然遇到同样的异常【参考方案2】:

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

你看到它抱怨找不到'__cxa_pure_virtual'的地方,这发生在gcc下,因为它找不到名为libstdc++的lib

所以,根据您使用的编译器制作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 或您建议的任何前缀目录下的所有二进制文件和库。

【讨论】:

以上是关于有没有人在 RHEL 上构建过omniORB?的主要内容,如果未能解决你的问题,请参考以下文章

如何交叉编译omniORB 4(在x86_64 for ARM 和omniORB 4.1.6 上)

无法在 RHEL 7 中安装omniidl

客户端使用java,服务端使用c++的corba编程环境搭建

如何在 Windows 10 上安装omniORB 和omniORBpy?

有没有人在 MacOS 10.6 上使用过 OpenCV 与 Python 2.7 一起工作?

有没有人在后台线程中使用 ALAssetsLibrary 时遇到过崩溃?