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

表现

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

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
展开阅读全文

没有更多推荐了,返回首页