加载共享库时出错

加载共享库时出错

我正在尝试在 Ubuntu 14.04 x64 上运行一个旧的 32 位应用程序。我已经通过 安装了基本的 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

我假设它实际上仍然被一些较低级别的依赖项(如libclibssl或)所阻碍libwhatsit,但有没有办法找出哪一个是真正的罪魁祸首,而无需反复试验?

答案1

我最终从全新的 CentOS i386 vm 开始,在运行过程中发现二进制文件需要libstdc++5。回到 Ubuntu,通过安装它sudo apt-get install libstdc++5:i386似乎已经成功了。

相关内容