2010-07-30 12 views
113

Próbuję skompilować kod źródłowy Androida pod Ubuntu 10.04. I pojawia się błąd mówiąc"/ usr/bin/ld: nie można znaleźć -lz"

/usr/bin/ld: nie można odnaleźć -lZ

Czy możesz mi powiedzieć jak mogę to naprawić? Co oznacza cannot find -lz? Oto pełny komunikat o błędzie:

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 

I moje wyjście wersja 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. 

mam już zainstalowane biblioteki 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. 

(mam, że od this link.)

Odpowiedz

4

Oznacza to, że poprosiłeś o dodanie biblioteki "libz.a" lub "libz.so" zawierający pakiet kompresji i chociaż kompilator znalazł jakieś pliki, żaden z nich nie był odpowiedni dla używanej kompilacji.

Musisz zmienić parametry kompilacji lub potrzebujesz zainstalować poprawną bibliotekę lub musisz określić, gdzie znajduje się właściwa biblioteka w wierszu poleceń linku z opcją typu -L/where/it/is/lib.

145

Miałem dokładnie ten sam błąd, i jak ty, instalacja zlib1g-dev go nie naprawiła. Instalowanie lib32z1-dev zmusiło mnie do tego. Mam system 64-bitowy i wydaje się, że chciał 32-bitowej biblioteki.

+18

To działało tutaj z libz-dev (pakiet wirtualny dla zlib1g-dev) na Kubuntu 12.04 x64. – Qsiris

+1

pomógł mi w zupełnie innym problemie. Dzięki :-) – mgjk

+0

To powinna być zaakceptowana odpowiedź – Speccy

30

prostu napotkał ten problem i wbrew przyjętym roztworu „pliki make są podzielone” i „gospodarz obejmuje nie powinny być zawarte w krzyż kompilacji”

Android build zawiera wiele wykonywalnych hostów wykorzystane przez SDK do zbudowania aplikacji na Androida. W moim przypadku make zatrzymał się podczas budowania zipalign, który służy do optymalizacji apk przed instalacją na urządzeniu z Androidem.

Instalacja lib32z1-dev rozwiązać mój problem, pod Ubuntu można zainstalować go za pomocą następującego polecenia:

sudo apt-get install lib32z1-dev 
2

To pokaże ci wskazówki o tym, dlaczego nie chce łącznik zainstalowaną bibliotekę:

LD_DEBUG=all make ... 

Miałem ten sam problem w innym kontekście: mój system /lib/libz.so.1 miał niezadowolone zależności od biblioteki libc, ponieważ próbowałem połączyć się z inną wersją systemu operacyjnego.

1

dla openSUSE 12.3 (Dartmouth) (i586) sudo zypper zainstalować zlib-devel zlib-devel-static

3

Inna możliwa przyczyna: pan przeszedł --static z łącznikiem, ale masz tylko dynamiczny wersja libz (libz.tak), ale nie wersji, która może być statycznie połączona (libz.a).

65

Dla x64 wystarczy zainstalować zlib1g-dev.

sudo apt-get install zlib1g-dev 

nie muszę wszystkie bibliotekami x86;)

+7

może potwierdzić, że działało na instalację lxml przez pip na ubuntu 14.04 – mwjackson

+0

samo dla mnie jak dla mwjackson, chociaż dostałem 'zlib1g-dev' przez metapackage' libz-dev', jak zasugerowano w innej odpowiedzi. – mknaf

+0

może potwierdzić, że zlib1g-dev działało dobrze na Debianie 8 Jessie 64 bit –

39

sudo apt-get install libz-dev w ubuntu.

+2

Działa również w Debianie (Jessie). –

+1

Czy ktoś mógłby rzucić trochę światła na to, dlaczego jest to konieczne? Mogłem zainstalować python-lxml w środowisku wirtualnym TYLKO po zainstalowaniu tego pakietu. Jednak gdybym próbował zainstalować go globalnie, nie miałbym żadnego problemu. : \ – cballenar