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

问题描述:

我想在Ubuntu 10.04下编译Android源代码。我得到一个错误的说法,“/ usr/bin/ld:找不到-lz”

在/ usr /斌/劳工处:找不到-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版本输出:

[email protected]:/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. 

(我得到来自this link

这意味着您要求它包含图书馆'libz.a'或'libz.so'包含一个压缩包,尽管编译器发现了一些文件,但它们都不适合您正在使用的构建。

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

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

+18

它在Kubuntu 12.04 x64上与libz-dev(用于zlib1g-dev的虚拟软件包)一起工作。 – Qsiris 2013-01-22 16:06:59

+1

帮助我解决了完全不同的问题。谢谢:-) – mgjk 2013-12-25 16:20:24

+0

这应该是被接受的答案 – Speccy 2014-03-23 19:45:22

我只是遇到了这个问题,并违背了“你的化妆文件被破坏”和“主机包括不应该被包含在一个交叉编译”

Android编译包括由使用的许多主机的可执行文件接受的解决方案SDK来构建一个Android应用程序。 在我的情况下,制作停止,同时建立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 ... 

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

openSUSE的12.3(达特茅斯)(i586系统) 须藤zypper的安装的zlib-devel的zlib的-devel的静态

另一个可能的原因:你已经通过--static给链接器,但你只有一个动态libz的版本(libz。所以),但不是可以静态链接的版本(libz.a)。

对于x64只需安装zlib1g-dev。

sudo apt-get install zlib1g-dev 

我并不需要所有的x86库;)

+7

可以确认这个工作在ubuntu下通过pip安装lxml 14.04 – mwjackson 2015-03-19 11:04:24

+0

对我来说和mwjackson一样,虽然我通过元包“libz-dev”得到了'zlib1g-dev',正如另一个答案中所建议的。 – mknaf 2015-03-25 22:15:55

+0

可以确认zlib1g-dev在Debian 8上运行良好Jessie 64位 – 2015-05-28 11:50:47

在Ubuntu sudo apt-get install libz-dev

+2

也可以在Debian(Jessie)下运行。 – 2016-01-29 12:15:17

+1

有人可以解释为什么这是必要的?我只能在安装此软件包后才能在虚拟环境中安装python-lxml。但是,如果我试图在全球安装它,我根本没有任何问题。 :\ – cballenar 2016-07-22 15:02:03