# /opt/dev/android-sdk/platforms/android-1.5/tools/aapt
/opt/dev/android-sdk/platforms/android-1.5/tools/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
在 i386 机器上这个 aapt 启动,但不是在 amd64 上。/lib/libz.so.1 在这两种情况下都存在。怎么来的?
看起来 SDK aapt 工具是 32 位二进制文件,因此它正在寻找 32 位版本的 libz 库但只找到 64 位。您可以使用
ldd
. 我相信如果您安装 emul-linux-x86-baselibs 软件包,它将为您提供正确的/usr/lib32
.我查看了 dev-util/android-sdk 并发现它正在将 app-emulation/emul-linux-x86-gtklibs 作为依赖项。
只需尝试:#emerge emul-linux-x86-baselibs,它将提供 32 位 libz.so.1 ...如果失败,请尝试 ldd /path/to/aapt 并提供输出以及 ldconfig 的输出-v | grep libz
该错误确实在 emul-linux 的 32 位 libz.so.1.2.3 中!
我刚刚自己构建了一个 32 位 libz 版本并且它可以工作 - aapt 不会抛出上述错误。如果您使用的是 gentoo - 所有 libz 版本的 emul-linux-x86-baselibs 都有这个问题(目前是 20100915-r1 和 20110129)
在 emul-linux-baselibs 的更新版本发布之前,您需要执行以下步骤:
问题是,虽然您自己编译的 64 位版本在 ELF 标头中有以下字段:
当前 emul-linux-x86-baselibs 提供的 32 位版本缺少 VERDEF 字段,它只包含
您可以检查自己的 32 位库的自定义构建是否具有 VERDEF 字段 - 我的有,我想知道为什么在 emul-linux 发行版中缺少它。
问候, cmuelle8
ps: 有时候电脑程序打印的错误信息是对的..