64位Ubuntu运行32位程序及下载依赖库

嗯干活的时候就是会遇到一些奇奇怪怪的问题。

运行32位程序

在普通的64位Ubuntu机器上直接运行32位的ELF程序会出现这样的问题:

yy@yy-DELL:~$ ./cjpeg 115.bmp
bash: ./cjpeg: 没有那个文件或目录

然而目录下明明有这个文件,这是因为64位系统中缺少32位程序运行时必要的库。在Ubuntu12.04之前可以通过安装库ia32-libs来解决此问题,在Ubuntu12.04之后的版本可以通过安装lib32ncurses5lib32z1来解决。

sudo apt-get install lib32ncurses5 lib32z1

下载安装指定依赖库

许多elf程序的运行会依赖一些共享库,如果没有安装会有如下提示:

yy@yy-DELL:~$ ./cjpeg 115.bmp 
./cjpeg: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory

此时就需要先安装共享库libjpeg.so.8,可以通过apt-file找到想要安装的共享库在哪个包里, 然后安装这个包。
首先安装apt-file:

sudo apt-get install apt-file
apt-file update

然后用apt-file的search选项来查找共享库:

yy@yy-DELL:~$ apt-file search libjpeg.so.8
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2

安装libjpeg-turbo8,注意对于32位的cjpeg程序,需要安装32位的libjpeg-turbo8:

sudo apt-get install libjpeg-turbo8:i386

其中i386指定了软件包为32位。安装完毕后再次运行cjpeg,可以看到cjpeg能够正常运行啦。

猜你喜欢

转载自blog.csdn.net/m0_37924639/article/details/79794829
今日推荐