我安装了 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:i386,libncurses5: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 版本。
如果你想使用“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)
就足够了。
| 归档时间: |
|
| 查看次数: |
424880 次 |
| 最近记录: |