在Ubuntu 18.04 TLS 64位系统运行一个程序时报错:没有那个文件或目录(no such file or directory)
通过如下两行命令看看问题出在哪:
file OldProgramNameHere
返回:
create_multimer: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 2.2.5, with debug_info, not stripped
ldd OldProgramNameHere
返回:
linux-gate.so.1 (0xf7fbf000)
libstdc++.so.5 => not found
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7ea0000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7e82000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7ca6000)
/lib/ld-linux.so.2 (0xf7fc0000)
原来这个程序是个32位程序,附64位系统运行32位程序的解决办法:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
还缺少一个libstdc++.so.5库,注意:需要安装一个32位的libstdc++.so.5。在网上下载了一个libstdc++5_3.3.6-20_i386.deb
dpkg-deb -x libstdc++5_3.3.6-20_i386.deb tmp
sudo cp tmp/usr/lib/libstdc++.so.5.0.7 /usr/lib32/
cd /usr/lib32
sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5
sudo ldconfig
问题解决!
Souce: 纽普生物 2020-01-13