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

Tho*_*efe 157 64-bit 32-bit

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

$ ./adb
bash: ./adb: No such file or directory
Run Code Online (Sandbox Code Playgroud)

虽然它在那里:

$ 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. 
Run Code Online (Sandbox Code Playgroud)

Android SDK 中所有其他 32 位工具的症状相同。

在过去,人们只需在 64 位 Ubuntu 上安装 32 位库即可获得 32 位支持,但这似乎不再起作用了。

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

Avi*_*Raj 228

到64位的多架构的Ubuntu系统上运行32位可执行文件,你必须添加i386的建筑和安装三个库软件包libc6:i386libncurses5:i386以及libstdc++6:i386

sudo dpkg --add-architecture i386
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是 Ubuntu 12.04 LTS (Precise Pangolin) 或更低版本,请使用以下命令:

sudo dpkg --add-architecture i386
Run Code Online (Sandbox Code Playgroud)

然后:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
Run Code Online (Sandbox Code Playgroud)

如果失败,也这样做

sudo apt-get install multiarch-support
Run Code Online (Sandbox Code Playgroud)

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

./example32bitprogram
Run Code Online (Sandbox Code Playgroud)


Bar*_*ino 12

当您拥有二进制文件时,可能会出现“没有此类文件或目录”,但它缺少一些库。如果您安装build-essential软件包,您将有ldd可用的命令。此命令ldd ./adb | grep not将显示缺少哪些库。只需使用 apt 在 i386 arch 中安装这些库。像这样:apt-get install libmissing:i386 当心,一些有缺陷的软件包会尝试首先删除 64 位版本。


小智 6

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

sudo apt-get install gcc-multilib
Run Code Online (Sandbox Code Playgroud)

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


aas*_*nov 5

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

sudo apt-get install android-tools-adb
Run Code Online (Sandbox Code Playgroud)

关于 32 位库 - 仅:

sudo apt-add-architecture i386
Run Code Online (Sandbox Code Playgroud)

就足够了。