当前位置: 首页>>技术教程>>正文


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

ubuntuer 技术教程 , , 去评论

问题描述

我安装了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位multi-architecture 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会告诉你什么库丢失。只需使用apt在i386 arch中安装这些库。像这样:apt-get install libmissing:i386注意,一些错误的软件包会尝试删除64位版本的冷杉。

第三种解决思路

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

sudo apt-get install android-tools-adb

而关于32位库 – 仅限于:

sudo apt-add-architecture i386

就足够了。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/574.html,未经允许,请勿转载。

相关文章