“/ usr / bin / ld:找不到-lz”

我想在Ubuntu 10.04下编译Android源代码。 我得到一个错误说,

/ usr / bin / ld:找不到-lz

你能告诉我怎样才能解决它? 什么cannot find -lz是什么意思? 以下是完整的错误消息:

 external/qemu/Makefile.android:1101: warning: overriding commands for target `external/qemu/android/avd/hw-config-defs.h' external/qemu/Makefile.android:933: warning: ignoring old commands for target `external/qemu/android/avd/hw-config-defs.h' host SharedLib: libneo_cgi (out/host/linux-x86/obj/lib/libneo_cgi.so) /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.so when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.a when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/libz.so when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/libz.a when searching for -lz /usr/bin/ld: cannot find -lz collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj/lib/libneo_cgi.so] Error 1 

而我的GCC版本输出:

 scheung@scheung-virtual-box:/media/EXTDIV/mydroid$ gcc --version gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3 Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

我已经安装了zlib1g-dev库:

 $ sudo apt-get install zlib1g-dev Reading package lists... Done Building dependency tree Reading state information... Done zlib1g-dev is already the newest version. 

(我从这个链接得到的。)

我有完全相同的错误,像你一样,安装zlib1g-dev没有修复它。 安装lib32z1-dev让我过去了。 我有一个64位的系统,它似乎是想要的32位库。

对于x64只需安装zlib1g-dev。

 sudo apt-get install zlib1g-dev 

我不需要所有的x86库;)

sudo apt-get install libz-dev在Ubuntu下sudo apt-get install libz-dev

我刚刚遇到这个问题,违反了“你的make文件被破坏”和“主机包括不应该包含在交叉编译中”

Android版本包含许多SDK用于构buildAndroid应用程序的主机可执行文件。 在我的情况下,停止build设zipalign,这是用来优化apk安装在Android设备上之前停止。

安装lib32z1-dev解​​决了我的问题,在Ubuntu下你可以用下面的命令安装它:

 sudo apt-get install lib32z1-dev 

这意味着你要求它包含一个包含压缩包的库libz.a或libz.so,尽pipe编译器发现了一些文件,但是没有一个适合你正在使用的构build。

您可能需要更改构build参数,或者需要安装正确的库,或者需要使用-L/where/it/is/libtypes选项指定链接命令行上正确的库的位置。

另一个可能的原因:你已经传递给链接器,但是你只有一个dynamic版本的libz(libz.so),但是没有可以静态链接的版本(libz.a)。

这将显示为什么链接器不需要安装的库的线索:

 LD_DEBUG=all make ... 

我在不同的上下文中遇到了同样的问题:我的系统/lib/libz.so.1对libc没有满意的依赖关系,因为我试图在不同版本的操作系统上重新链接。

对于opensuse 12.3(达特茅斯)(i586)sudo zypper install zlib-devel zlib-devel-static

其他人提到lib32z-dev可以解决这个问题,但是通常可以在这里find所需的软件包:

http://source.android.com/source/initializing.html请参阅“安装所需的软件包”;