表现
当你有一个可执行文件,看属性的时候是这样的:
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
本文介绍了如何解决Ubuntu 64位系统无法运行32位程序的问题,包括针对Ubuntu 12.04的直接安装方案,13.04及更高版本需要安装特定库的方法,以及处理只有64位库可用的情况。
9115

被折叠的 条评论
为什么被折叠?



