如何在Ubuntu 64位中运行32位应用程序?

我安装了Ubuntu 14.04和当前的Android开发SDK,其中包含32位可执行文件。 我发现我无法运行这些32位二进制文​​件。 试图从bash启动它们给了我一个错误:

$ ./adb bash: ./adb: No such file or directory 

它在那里:

 $ ls -al ./adb -rwxrwxrwx 1 thomas thomas 1231255 Jan 17 13:31 ./adb $ file ./adb ./adb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped. Same symptom for all the other 32-bit tools in the Android SDK. 

在过去,人们可以在64位Ubuntu上安装32位库以获得32位支持,但这似乎不再适用。

如何在64位Ubuntu 14.04上运行32位应用程序?

要在64位多体系结构Ubuntu系统上运行32位可执行文件,您必须添加i386体系结构并安装三个库包libc6:i386libncurses5:i386libstdc++6:i386

 sudo dpkg --add-architecture i386 

或者如果您使用的是Ubuntu 12.04 LTS(精确穿山甲)或以下,请使用:

 echo "foreign-architecture i386" > /etc/dpkg/dpkg.cfg.d/multiarch 

然后:

 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 

如果失败,也要做

 sudo apt-get install multiarch-support 

完成这些步骤后,您应该能够运行32位应用程序:

 ./example32bitprogram 

当你有二进制文件时,“没有这样的文件或目录”可能会适用,但它缺少一些库。 如果安装build-essential软件包,则可以使用ldd命令。 这个命令是ldd ./adb | grep not ldd ./adb | grep not告诉你缺少哪些库。 只需使用apt在i386 arch中安装这些库。 像这样: apt-get install libmissing:i386当心,一些有缺陷的软件包将尝试删除64位版本的冷杉。

如果你想使用“adb”,它有一个包:

 sudo apt-get install android-tools-adb 

关于32位库 – 仅限:

 sudo apt-add-architecture i386 

就足够了。

除了Zanna和Avinash Raj的出色答案,我还必须安装gcc-multilib:

 sudo apt-get install gcc-multilib 

可能这是因为我想在64位上运行一个旧的gcc版本。