我安装了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位支持,但这似乎不再起作用。

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

评论

stackoverflow.com/a/19524010/1778421

#1 楼

要在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


评论


@AvinashRaj这帮助了我!但是,实际上应该执行的最后一个命令“ sudo ./adb”是什么?

–马塞尔
14年5月22日在21:33

它执行当前目录中存在的32位adb二进制文件。

– Avinash Raj
14年5月23日在1:05

为了能够在Ubuntu 14.04上使用aapt,我还必须安装lib32z1,但注意到它插入了libc6-i386(区分,注意连字符,而不是冒号)。

–克里斯·贝蒂(Chris Betti)
2014年5月23日19:09

我做了您的步骤,libc6:i386,libncurses5:i386,libstdc ++ 6:i386是最新版本,并设置为手动安装。但是之后它说:“无法安装Soma软件包。这可能意味着您请求了不可能的情况,或者您使用的是不稳定的发行版……”和未满足的依赖性:libstdc ++ 6-6.4-dev:i386取决于g ++-4.4 :i386(不会安装)。冲突:libstdc ++ 6-6-4.4-dbg:i386 ...以及其他有关libstdc ++ 6-4.4 / 6/7的冲突,等等。出了什么问题?或者我应该现在就保留它?

–弗雷德里克·高斯(Fredrick Gauss)
2014年6月4日6:09

@FredrickGauss进入这里。

– Avinash Raj
2014年6月4日在6:13

#2 楼

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

评论


谢谢,这将解释奇怪的错误消息。我首先感到困惑,为什么bash会给我这个错误(而不是一些错误的错误源于遗漏库的子进程),但是现在我想bash只会看到exec(3)返回ENOENT并打印出来。

– Thomas Stuefe
2014年4月24日12:30



#3 楼

如果要使用“ adb”,则有一个软件包:

sudo apt-get install android-tools-adb


以及大约32位库-仅:

sudo apt-add-architecture i386


就足够了。

评论


感谢您的提示,但我想使用从google下载的android工具,而不是Ubuntu仓库中的工具。我也不确定该软件包的完整性。

– Thomas Stuefe
2014年4月24日在12:36

Ubuntu存储库必须具有新版本。该软件包仅包含adb。如果您想要fastboot-也有它的软件包:)

–aastefanov
2014年4月24日12:44

#4 楼

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

sudo apt-get install gcc-multilib


可能这是因为我想在64位。

#5 楼

只是Zanna的一个补充:
以下内容解决了android studio中“无法安装库”的问题:

sudo apt-get install libdb1-compact tzdata initscripts


这代替了缺少的库libstdc ++ 6-i386,这可能是因为软件包已过时。不知道为什么这个特定的库很重要。