2010-07-30 101 views
113

我想在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

回答

4

這意味着您要求它包含圖書館'libz.a'或'libz.so'包含一個壓縮包,儘管編譯器發現了一些文件,但它們都不適合您正在使用的構建。

您可能需要更改構建參數,或者需要安裝正確的庫,或者需要使用-L/where/it/is/lib類型選項指定鏈接命令行上的正確庫的位置。

145

我有完全相同的錯誤,和你一樣,安裝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

30

我只是遇到了這個問題,並違背了「你的化妝文件被破壞」和「主機包括不應該被包含在一個交叉編譯」

Android編譯包括由使用的許多主機的可執行文件接受的解決方案SDK來構建一個Android應用程序。 在我的情況下,製作停止,同時建立zipalign,這是用來優化apk安裝在Android設備上之前。

安裝lib32z1-dev的解決我的問題,在Ubuntu下,你可以用下面的命令來安裝它:

sudo apt-get install lib32z1-dev 
2

這將顯示有關爲什麼連接不希望安裝的庫線索:

LD_DEBUG=all make ... 

我曾在不同的上下文同樣的問題:我的系統上的libc /lib/libz.so.1有不滿意的依賴關係,因爲我試圖重新鏈接在不同版本的操作系統。

1

openSUSE的12.3(達特茅斯)(i586系統) 須藤zypper的安裝的zlib-devel的zlib的-devel的靜態

3

另一個可能的原因:你已經通過--static給鏈接器,但你只有一個動態libz的版本(libz。所以),但不是可以靜態鏈接的版本(libz.a)。

65

對於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

39

在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