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

mic*_*ael 158 linux linker gcc

我正在尝试在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
Run Code Online (Sandbox Code Playgroud)

我的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.
Run Code Online (Sandbox Code Playgroud)

我已经安装了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.
Run Code Online (Sandbox Code Playgroud)

(我从这个链接得到了.)

kyl*_*inn 168

我有完全相同的错误,和你一样,安装zlib1g-dev并没有解决它.安装lib32z1-dev让我超越它.我有一个64位系统,似乎它想要32位库.

  • 它在Kubuntu 12.04 x64上与libz-dev(zlib1g-dev的虚拟包)一起使用. (24认同)
  • 还帮助我通过Ubuntu 14.04 LTS/trusty上的pip为Python安装/构建lxml-3.4.0.谢谢! (9认同)

phe*_*anu 105

对于x64,只需安装zlib1g-dev.

sudo apt-get install zlib1g-dev
Run Code Online (Sandbox Code Playgroud)

我不需要所有的x86库;)

  • 可以确认这适用于通过ubuntu 14.04上的pip安装lxml (8认同)
  • 对我来说和 mwjackson 一样,尽管我通过元包 `libz-dev` 获得了 `zlib1g-dev`,正如另一个答案中所建议的那样。 (2认同)
  • 如果这不起作用,请尝试静态版本“zlib-static”。 (2认同)
  • 它在ubuntu16.04中工作。谢谢! (2认同)
  • 在amd64 Ubuntu 18.04 LTS,Bionic Beaver上确认 (2认同)

小智 47

sudo apt-get install libz-dev 在ubuntu.

  • 也适用于Debian(Jessie). (2认同)
  • 有人可以解释为什么这是必要的吗?仅在安装此软件包后,我才能在虚拟环境中安装 python-lxml。但是,如果我尝试在全球范围内安装它,则根本不会有任何问题。:\ (2认同)

小智 31

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

android构建包括SDK用于构建Android应用程序的许多主机可执行文件.在我的情况下,make在构建zipalign时停止,用于在Android设备上安装之前优化apk.

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

sudo apt-get install lib32z1-dev
Run Code Online (Sandbox Code Playgroud)


小智 7

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

在linux上:

sudo apt-get install zlib*
Run Code Online (Sandbox Code Playgroud)

在Centos上:

sudo yum install zlib*
Run Code Online (Sandbox Code Playgroud)


DIN*_*LIT 6

尝试这三种解决方案之一。它必须工作:):

  1. 须藤 apt-get install zlib1g-dev
  2. 须藤 apt-get 安装 libz-dev
  3. 须藤 apt-get 安装 lib32z1-dev

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

对于类似 rhel7 的系统,包是 zlib-devel


Jon*_*ler 5

这意味着您要求它包含包含压缩包的库“libz.a”或“libz.so”,尽管编译器找到了一些文件,但它们都不适合您正在使用的构建。

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


jhc*_*ark 5

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