编译 Android 源码报错:/usr/bin/ld: cannot find -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.

(我从这个链接得到。)

186499 次浏览

这意味着您要求它包含库'libz。A '或'libz。包含一个压缩包,尽管编译器发现了一些文件,但没有一个适合您正在使用的构建。

您要么需要更改构建参数,要么需要安装正确的库,要么需要使用-L/where/it/is/lib类型选项在链接命令行上指定正确的库的位置。

我遇到了完全相同的错误,和您一样,安装zlib1g-dev并没有修复它。安装lib32z1-dev让我克服了这一点。我有一个64位系统,它似乎想要32位库。

我刚刚遇到了这个问题,与“你的make文件坏了”和“主机包含永远不应该包含在交叉编译中”的公认解决方案相反

android构建包括许多由SDK用于构建android应用程序的主机可执行文件。 在我的例子中,make在构建zipalign时停止,它用于优化apk,然后安装到android设备上

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

sudo apt-get install lib32z1-dev

其他人提到lib32z-dev解决了这个问题,但一般来说,所需的包可以在这里找到:

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

这将告诉你为什么链接器不想要安装的库的线索:

LD_DEBUG=all make ...

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

for opensuse 12.3 (Dartmouth) (i586) 安装zlib-devel zlib-dev -static

另一个可能的原因是:您已经将—static传递给了链接器,但是您只有libz的动态版本(libz.so),而没有可以静态链接的版本(libz.a)。

对于x64,安装zlib1g-dev

sudo apt-get install zlib1g-dev

我不需要所有的x86库;)

ubuntu中的sudo apt-get install libz-dev

我有完全相同的错误,安装zlib-devel解决了我的问题, 输入命令,安装zlib包

在linux上:

sudo apt-get install zlib*

Centos:

sudo yum install zlib*

试试这三种方法中的一种。它必须工作:):

  1. Sudo apt-get安装zlib1g-dev
  2. Sudo apt-get安装libz-dev
  3. 安装lib32z1-dev

事实上,缺少的不是lz命令,而是zlib库的开发文件。所以你应该为ex安装zlib1g-devlib来获取它。

对于rhel7这样的系统,包是 zlib-devel