Поведение совместно используемой библиотеки в 32-битной и 64-битной версиях с Java 1.4 и Suse 9 - PullRequest
2 голосов
/ 15 марта 2012

Прежде всего, это может быть очень интересным вопросом для всех вас. Но, как говорится, если ты не спрашиваешь, как ты учишься?

Итак, вот в чем дело:

Мы разработали этот файл .JAR для работы под Java 1.4 и установили его на SUSE 9. Enterprise Server.

Мы также протестировали его на разных платформах: - Suse 9 Enterprise Server 32 бита + JDK 1.4.2_08 + LIBSTDC ++. SO.6: Работает без сбоев, ошибки не возвращаются.

  • Сервер Red Hat 5.5, 64 бита + JDK 1.4: Работает без сбоев, ошибки не возвращаются.

  • Suse 9 Enterprise Server 64 бита + JDK 1.4.2_08 (32 бита) + LIBSTDC ++. SO.6: Если я использую библиотеки 32 битов моей программы, она возвращает сообщение об ошибке: «Исключение в потоке» основное

НО , если я использую библиотеки 64 битов моей программы, она возвращает эту ошибку: «Исключение в потоке» главное

Я попытался дать команду java -Djava.library.path с путем, где находится MySharedLibrary, но она не сработала.

Мой вопрос:

ПОЧЕМУ она выдаст ошибку в 64-битном Suse 9, если она имеет такую ​​же конфигурацию, как 32-битный Suse 9?

Я понимаю, что есть разница между архитектурами, хорошо. Но это не вопрос компиляции архитектуры, поскольку в RedHat 5.5 с 64 битами он работает.

Может кто-нибудь направить меня через эту загадку? Каковы мои возможные решения?

Спасибо всем вам, Гуру.

1 Ответ

0 голосов
/ 16 марта 2012

Вы не можете связать 64-битные библиотеки из 32-битной JVM.Если вы хотите связать 64-битные библиотеки, используйте 64-битную Java.

Что касается неопределенного символа.Возможно, у вас неработающая ссылка, потому что в suse отсутствует библиотека, которая присутствовала на redhat.Я не верю, что на вопрос можно ответить, не зная больше о MySharedLibrary.so.

...