it-swarm.com.de

"/ usr/bin/ld: kann -lz nicht finden"

Ich versuche, Android-Quellcode unter Ubuntu 10.04 zu kompilieren. Ich bekomme eine Fehlermeldung,

/ usr/bin/ld: kann -lz nicht finden

Kannst du mir bitte sagen, wie ich es reparieren kann? Was bedeutet cannot find -lz? Hier ist die vollständige Fehlermeldung:

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

Und meine GCC-Version:

[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.

Ich habe bereits die zlib1g-dev-Bibliothek installiert:

$ Sudo apt-get install zlib1g-dev 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
zlib1g-dev is already the newest version.

(Ich bekomme das aus diesem Link .)

135
michael

Ich hatte genau den gleichen Fehler, und wie Sie es bei der Installation von zlib1g-dev nicht beheben konnten. Die Installation von lib32z1-dev brachte mich an mir vorbei. Ich habe ein 64-Bit-System und es scheint, als wollte es die 32-Bit-Bibliothek.

156
kylefinn

Für x64 installieren Sie einfach zlib1g-dev.

Sudo apt-get install zlib1g-dev

Ich brauche nicht alle x86-Bibliotheken;)

89
phedoreanu

Sudo apt-get install libz-dev in Ubuntu. 

45
Siva mbigai M

Ich bin gerade auf dieses Problem gestoßen und im Gegensatz zu der akzeptierten Lösung von "Ihre Dateien sind beschädigt" und "Host-Includes sollten niemals in ein Cross-Compile eingeschlossen werden".

Der Android-Build enthält viele ausführbare Host-Dateien, die vom SDK zum Erstellen einer Android-App verwendet werden. In meinem Fall wurde das Make beim Erstellen von zipalign angehalten, mit dem ein APK vor der Installation auf einem Android-Gerät optimiert wird.

Die Installation von lib32z1-dev hat mein Problem gelöst. Unter Ubuntu können Sie es mit dem folgenden Befehl installieren:

Sudo apt-get install lib32z1-dev
31
Adam

Ich hatte genau den gleichen Fehler. Die Installation von zlib-devel hat mein Problem gelöst Geben Sie den Befehl ein und installieren Sie das zlib-Paket.

Unter Linux:

Sudo apt-get install zlib*

Auf Centos:

Sudo yum install zlib*
5
Abhi km

Eine andere mögliche Ursache: Sie haben --static an den Linker übergeben, aber Sie haben nur eine dynamische Version von libz (libz.so), aber keine Version, die statisch verlinkt werden kann (libz.a).

4
jhclark

Dies bedeutet, dass Sie die Bibliothek "libz.a" oder "libz.so" mit einem Komprimierungspaket enthalten. Obwohl der Compiler einige Dateien gefunden hat, war keine für das von Ihnen verwendete Build geeignet.

Sie müssen entweder Ihre Build-Parameter ändern, oder Sie müssen die richtige Bibliothek installieren, oder Sie müssen angeben, wo sich die richtige Bibliothek in der Linkbefehlszeile befindet, und zwar mit der Option -L/where/it/is/lib.

4

Dies zeigt Ihnen, warum der Linker die installierte Bibliothek nicht möchte:

LD_DEBUG=all make ...

Ich hatte das gleiche Problem in einem anderen Kontext: Mein System /lib/libz.so.1 hatte unzufriedene Abhängigkeiten von libc, weil ich versuchte, auf eine andere Version des Betriebssystems umzusteigen.

2
qneill

für opensuse 12.3 (Dartmouth) (i586) Sudo Zypper installieren zlib-devel zlib-devel-static

1
euthygenes

Versuchen Sie eine dieser drei Lösungen. Es muss funktionieren :):

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

Was fehlt, ist nicht der lz-Befehl, sondern die Entwicklungsdateien für die zlib-Bibliothek. Sie sollten also zlib1g-devlib für ex installieren, um sie zu erhalten.

0
DINA TAKLIT

Andere haben erwähnt, dass lib32z-dev das Problem löst, aber im Allgemeinen sind die erforderlichen Pakete hier zu finden:

http://source.Android.com/source/initializing.html Siehe "Erforderliche Pakete installieren"

0
Conley Owens

Ich möchte nur folgendes hinzufügen:

ich habe eine ähnliche Fehlermeldung erhalten, sobald ich versucht habe, Tiramisu Sub-Module zu installieren (Halide installieren) Der Fehler war 

read -lz -o bin/libHalide.so
/usr/bin/ld:  cannot find -lz 

und zu tun, was @phedoreanu gemeinsam benutzte, reparierte mein Pb.

Sudo apt-get install zlib1g-dev

Also keine Sorge, auch wenn dieser Fehler in Ihrer Installation von Tiramisu auftaucht, ist dies ein Medikament dafür;).

0
DINA TAKLIT