错误的 ELF 类:如何成功安装 OpenSplice DDS?

Posted

技术标签:

【中文标题】错误的 ELF 类:如何成功安装 OpenSplice DDS?【英文标题】:Wrong ELF class: How does one successfully install OpenSpliceDDS? 【发布时间】:2016-10-24 16:23:12 【问题描述】:

我一直在尝试在 CentOS 上安装并成功运行 OpenSplice DDS,最初的目标是安装它并运行 HelloWorld 示例(Java 中),我确实使用make 制作了必要的文件,编译需要编译(.jar)的订阅者和发布者步骤的阶段非常困难,我已经为此工作了将近 2-3 周,问题是,很少有文档和/或资源讨论与相关的问题DDS 安装(还有很多),我也尝试咨询过我的教授,他向我暗示这可能是兼容性问题,有时当我修复此安装的一个问题时,会出现另一个问题,以下是我当前的输出:

[root@localhost standalone]# java -jar saj_helloworld_sub.jar 
OpenJDK 64-Bit Server VM warning: You have loaded library /root/Downloads/HDE/x86.linux/lib/libdcpssaj.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
org.opensplice.dds.dcps.DomainParticipantFactoryImpl.get_instance() failed: /root/Downloads/HDE/x86.linux/lib/libdcpssaj.so: /root/Downloads/HDE/x86.linux/lib/libdcpssaj.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
Exception in thread "main" java.lang.NullPointerException
    at DDS.DomainParticipantFactory.create_participant(Unknown Source)
    at DDSEntityManager.createParticipant(DDSEntityManager.java:67)
    at HelloWorldDataSubscriber.main(HelloWorldDataSubscriber.java:38)

Java 版本:

# java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)

系统详情:

# uname -a

Linux localhost.localdomain 3.10.0-327.36.1.el7.x86_64 #1 SMP Sun Sep 18 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

所以,wrong ELF class 是我可能遇到的错误之一,安装 DDS 并正常工作的困难不仅仅是我一个人遇到的,我的其他一些朋友也有不同的错误,因为没有网上有关于OpenSplice DDS安装的资源和讨论(除了官网和自述文件),我决定打开这个讨论。

【问题讨论】:

【参考方案1】:

您正在运行 64 位操作系统 - x86_64 表示这一点。

您正在运行 64 位 java VM - OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)

你有一个 32 位库:/root/Downloads/HDE/x86.linux/lib/libdcpssaj.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)

最简单的解决方法是下载 64 位版本的 OpenSplice DDS 来解决这个问题。

【讨论】:

以上是关于错误的 ELF 类:如何成功安装 OpenSplice DDS?的主要内容,如果未能解决你的问题,请参考以下文章

RStudio Server CentOS 错误 ELF 类

Linux中配置jdk环境变量出错:bad ELF interpreter: No such file or directory解决方法

Swig Perl:错误的 ELF 类

如何在Balena上运行的raspberry pi 3上修复无效的ELF标头错误?

redhat7安装jdk1.7报错/home/renqiwei/jdk1.7/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such fi

G++ 错误 ELF CLASS 错误