Я пытаюсь запустить старое 32-битное приложение на Ubuntu 14.04 x64. Я установил базовую 32-битную поддержку через sudo apt-get install libc6-i386
, но теперь я получаю смутное сообщение о разделяемых библиотеках. Кажется, он говорит, что не может загрузить мою библиотеку, потому что это x64, но это не так - все это 32-битная версия.
user@ubuntu-develop:~/Desktop/MyApp/bin$ ./MyApp
./MyApp: error while loading shared libraries: libMyApp.so.1: wrong ELF class: ELFCLASS64
user@ubuntu-develop:~/Desktop/MyApp/bin$ file libMyApp.so.1
libMyApp.so.1: symbolic link to `libMyApp.so.1.0.0'
user@ubuntu-develop:~/Desktop/MyApp/bin$ file libMyApp.so.1.0.0
libMyApp.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=701d820fbe229a015ba4c56b61015c08bb2c4ac0, not stripped
user@ubuntu-develop:~/Desktop/MyApp/bin$ file MyApp
MyApp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, BuildID[sha1]=1f736df460b9754633c7d67284674da395dc31c8, not stripped
Я предполагаю, что на самом деле это все еще задыхается от некоторой зависимости более низкого уровня, такой как libc
или libssl
или libwhatsit
, но есть ли способ выяснить, кто из них является настоящим виновником, если не считать испытания а ошибка?
Я закончил тем, что запустился с нового CentOS i386 vm, и в процессе получения этого выполнения там нашел, что для двоичного файла нужно libstdc++5
. Назад на Ubuntu, устанавливая это через sudo apt-get install libstdc++5:i386
, кажется, добился цели.