Wrong ELF class: 如何成功安装OpenSpliceDDS?
Wrong ELF class: How does one successfully install OpenSpliceDDS?
我一直在尝试在 CentOS 上安装并成功 运行 OpenSplice DDS,最初 objective 是安装它和 运行 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 安装的资源和讨论(除了官方网站和自述文件),我决定打开这个讨论。
您是 运行 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 来解决这个问题。
我一直在尝试在 CentOS 上安装并成功 运行 OpenSplice DDS,最初 objective 是安装它和 运行 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 安装的资源和讨论(除了官方网站和自述文件),我决定打开这个讨论。
您是 运行 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 来解决这个问题。