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


172

我正在尝试在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.

(我从这个链接中得到了。)

Answers:


171

我遇到了完全相同的错误,并且像您一样,安装zlib1g-dev不能修复它。安装lib32z1-dev让我越过了它。我有一个64位系统,似乎它想要32位库。


25
它在Kubuntu 12.04 x64上与libz-dev(zlib1g-dev的虚拟软件包)一起使用。
Qsiris

10
还帮助我通过Ubuntu 14.04 LTS / trusty上的pip为Python安装/构建了lxml-3.4.0。谢谢!
玛丽安2014年

117

对于x64安装zlib1g-dev

sudo apt-get install zlib1g-dev

我不需要所有的x86库;)


9
可以在ubuntu 14.04上通过pip确认这对于安装lxml是否有效
mwjackson

2
对我来说,与mwjackson一样,尽管我zlib1g-dev通过metapackage获得libz-dev,如另一个答案中所建议。
mknaf

1
如果这不起作用,请尝试使用静态版本zlib-static
DearVolt

3
在amd64 Ubuntu 18.04 LTS,Bionic Beaver上确认
deinerson1

52

sudo apt-get install libz-dev 在ubuntu。


2
有人可以阐明为什么这是必要的吗?安装此软件包后,我才能够在虚拟环境中安装python-lxml。但是,如果我尝试在全球范围内安装它,那么我完全不会有任何问题。:\
cballenar '16

具体情况并不确定,但广泛python-lxml要求zlib库中包含它无法或根本不提供自身的逻辑。如果由于丢失或某些权限障碍而无法到达库,则它将无法构建/运行。
ti7

@cballenar:简短答案:依赖关系 python-lxml取决于Provides: libz-dev。C / C ++程序经过编译,并与提供功能,例程和数据结构的库链接。Unix系统使用.so.a.la文件和Windows使用.dll。这些是编译的共享库文件,其中包含其他程序可以链接并用于实现某些功能的例程。对于此示例:libz实现数据压缩和解压缩功能。
TrinitronX

@cballenar:详细答案(第1部分):libz-dev是Ubuntu上的一个虚拟软件包(请在您的系统上使用以下命令验证apt show libz-dev)。zlib1g-dev提供的另一个软件包libz-dev包括共享库文件/usr/lib/x86_64-linux-gnu/libz.aC Header文件 /usr/include/zconf.h/usr/include/zlib.h。您可以使用以下命令查看软件包内容:dpkg -L zlib1g-dev,其中显示了其中包含的所有文件。
TrinitronX

@cballenar:长答案(第2部分):如所提到的,libz-dev也Debian中)被提供通过zlib1g-dev经由Debian包Provides: libz-dev在该行的Debian源包的 debian/control文件。这就是apt打包管理器知道如何解决via python-lxml上的编译时virtualenv包依赖关系的libz-dev方式zlib1g-dev
TrinitronX

31

我只是遇到了这个问题,与“您的make文件已损坏”和“主机包含绝对不能包含在交叉编译中”的公认解决方案相反

android构建包含SDK用来构建android应用的许多主机可执行文件。就我而言,make在构建zipalign时停止了,该过程用于在安装到android设备上之前优化apk。

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

sudo apt-get install lib32z1-dev

8

我遇到了完全相同的错误,安装zlib-devel解决了我的问题,键入命令并安装zlib软件包。

在Linux上:

sudo apt-get install zlib*

在Centos上:

sudo yum install zlib*

4

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

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


4

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


4

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

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

实际上缺少的不是lz命令,而是zlib库的开发文件,因此您应该安装zlib1g-devlib for ex才能获得它。

对于类似rhel7的系统,软件包为 zlib-devel


3

这将向您显示有关链接器为何不希望安装库的线索:

LD_DEBUG=all make ...

在不同的上下文中,我遇到了同样的问题:我的系统/lib/libz.so.1对libc的依赖关系未得到满足,因为我试图在另一个版本的OS上进行重新链接。


1

对于opensuse 12.3(Dartmouth)(i586)sudo zypper install zlib-devel zlib-devel-static


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.