问题描述
我安装了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:i386
,libncurses5:i386
和libstdc++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
就足够了。