Неправильный класс ELF: Как успешно установить OpenSpliceDDS?

Я пытался установить и успешно запустить OpenSplice DDS в CentOS. Первоначальная цель - установить его и запустить пример 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 18 сентября 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Итак wrong ELF class Это одна из возможных ошибок, с которыми я могу столкнуться, что трудности с установкой и корректной работой DDS встречаются не только мной одним, некоторые другие мои друзья также сталкиваются с разными ошибками, и поскольку в Интернете нет ресурсов и обсуждений об установке OpenSplice DDS (кроме официального сайта и файла readme), я решил открыть это обсуждение.

1 ответ

Решение

Вы используете 64-битную операционную систему - x86_64 указывает на это.

Вы используете 64-битную Java Java - 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, чтобы обойти эту проблему.

Другие вопросы по тегам