Ubuntu 18.04 TLS 64位系统运行32位程序及libstdc++.so.5问题解决

在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