解决ubuntu 64位系统 无法运行32位程序的问题

本文介绍了如何解决Ubuntu 64位系统无法运行32位程序的问题,包括针对Ubuntu 12.04的直接安装方案,13.04及更高版本需要安装特定库的方法,以及处理只有64位库可用的情况。

表现

当你有一个可执行文件,看属性的时候是这样的:

tofu@tofu-pc:~$ ls -ls work
384 -rwxrwxr-x 1 tofu tofu 33441 Dex 14 11:50 work

再看其需要的链接库:

tofu@tofu-pc:~$ ldd work
libm.so.6 => /lib32/libm.so.6 (0xf7714000)
libc.so.6 => /lib32/libc.so.6 (0xf7569000)
/lib/ld-linux.so.2 (0xf776a000)

运行的时候是这样的:

tofu@tofu-pc:~$ ./work
-bash: ./work: No such file or direcory

明明文件存在,而且是可执行的。
再看文件类型:

tofu@tofu-pc:~$ file work
work:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (used shared libs), for GNU/linux 2.2.5, stripped

这就对了,这是个32位的可执行文件,没有32位的库支持是跑不了的。

对于ubuntu 12.04

直接执行:

tofu@tofu-pc:~$ sudo apt-get install ia32-libs

即可运行

对于ubuntu 13.04以后的版本

官方默认不提供ia32-libs了,apt-get找不到这个包,需要安装:

tofu@tofu-pc:~$ sudo apt-get install libc6-i386

安装完以后就可以运行了。

另外一种情况

执行:

tofu@tofu-pc:~$ dpkg -l libc6
libc6:amd64

说明只有64位的库可用。
可以执行以下命令:

sudo dpkg --add-architecture i386
sudo apt-get update
apt-get 安装一个32位的程序

这样执行

tofu@tofu-pc:~$ dpkg -l libc6
libc6:adm64
libc6:i386
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值