我正在尝试在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.
(我从this link得到了。)
答案 0 :(得分:160)
我有完全相同的错误,和你一样,安装zlib1g-dev并没有解决它。安装lib32z1-dev让我超越它。我有一个64位系统,似乎它想要32位库。
答案 1 :(得分:94)
对于x64,只需安装zlib1g-dev。
sudo apt-get install zlib1g-dev
我不需要所有的x86库;)
答案 2 :(得分:46)
sudo apt-get install libz-dev
。
答案 3 :(得分:31)
我刚刚遇到这个问题而且与“你的make文件坏了”和“主机包含永远不应该包含在交叉编译中”的公认解决方案相悖了
android构建包括SDK用于构建Android应用程序的许多主机可执行文件。 在我的情况下,make在构建zipalign时停止,用于在Android设备上安装之前优化apk。
安装lib32z1-dev解决了我的问题,在Ubuntu下你可以使用以下命令安装它:
sudo apt-get install lib32z1-dev
答案 4 :(得分:5)
我有完全相同的错误,安装zlib-devel解决了我的问题, 输入命令并安装zlib包。
在linux上:
sudo apt-get install zlib*
On Centos:
sudo yum install zlib*
答案 5 :(得分:4)
这意味着你要求它包含包含压缩包的库'libz.a'或'libz.so',尽管编译器找到了一些文件,但它们都不适合你正在使用的构建。
您需要更改构建参数,或者需要安装正确的库,或者需要使用-L/where/it/is/lib
类型选项指定链接命令行上正确库的位置。
答案 6 :(得分:4)
另一个可能的原因:你已经将--static传递给了链接器,但是你只有一个动态版本的libz(libz.so),而不是一个可以静态链接的版本(libz.a)。
答案 7 :(得分:2)
这将向您展示链接器不希望安装库的原因:
LD_DEBUG=all make ...
我在不同的上下文中遇到了同样的问题:我的系统/lib/libz.so.1对libc的依赖性不满意,因为我试图重新链接不同版本的操作系统。
答案 8 :(得分:1)
for opensuse 12.3(达特茅斯)(i586) sudo zypper install zlib-devel zlib-devel-static
答案 9 :(得分:0)
其他人提到lib32z-dev解决了这个问题,但一般来说可以在这里找到所需的包:
http://source.android.com/source/initializing.html 请参阅“安装所需的软件包”
答案 10 :(得分:0)
只想补充一点:
尝试安装提拉米苏Sub模块(安装Halide)后,出现类似错误 错误是
read -lz -o bin/libHalide.so
/usr/bin/ld: cannot find -lz
做共享@phedoreanu的事情来修复我的铅。
sudo apt-get install zlib1g-dev
因此即使您在提拉米苏的安装中出现此错误,也不必担心,这是他们的良药;)。
答案 11 :(得分:0)
尝试这三种解决方案之一。它必须工作:):
实际上缺少的不是lz
命令,而是zlib
库的开发文件。因此,您应该安装zlib1g-dev
lib for ex来获取它。