Ich versuche, Android-Quellcode unter Ubuntu 10.04 zu kompilieren. Ich erhalte eine Fehlermeldung:
/ usr / bin / ld: -lz kann nicht gefunden werden
Können Sie mir bitte sagen, wie ich das Problem beheben kann? Was heißt cannot find -lz
das 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 Ausgabe:
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.
Ich habe die zlib1g-dev
Bibliothek bereits 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.
(Das bekomme ich von diesem Link .)
Für x64 installieren
zlib1g-dev
.Ich brauche nicht alle x86-Bibliotheken;)
quelle
zlib1g-dev
über das Metapaket gekommen binlibz-dev
, wie in einer anderen Antwort vorgeschlagen wurde.zlib-static
.sudo apt-get install libz-dev
in Ubuntu.quelle
python-lxml
benötige jedoch im Großen und Ganzen eine in der zlib-Bibliothek enthaltene Logik, die sie selbst nicht bereitstellen kann oder einfach nicht bereitstellt. Wenn es die Bibliothek nicht erreichen kann, weil es fehlt oder eine Berechtigungsbarriere besteht, kann es nicht erstellt / funktionieren.python-lxml
hängt von jedem Paket ab, dasProvides: libz-dev
. C / C ++ - Programme werden kompiliert und mit Bibliotheken verknüpft, die Funktionen, Routinen und Datenstrukturen bereitstellen. Unix - Systeme verwenden.so
,.a
,.la
Dateien und Windows - Anwendung.dll
. Hierbei handelt es sich um kompilierte gemeinsam genutzte Bibliotheksdateien, die Routinen enthalten, mit denen andere Programme verknüpfen und einige Funktionen implementieren können. In diesem Beispiel:libz
Implementiert Datenkomprimierungs- und Dekomprimierungsfunktionen .libz-dev
ist ein virtuelles Paket unter Ubuntu (überprüfen Sie dies auf Ihrem System mit :)apt show libz-dev
. Das andere Paketzlib1g-dev
bietetlibz-dev
, die die gemeinsam genutzte Bibliothek - Datei enthält/usr/lib/x86_64-linux-gnu/libz.a
, und die C - Header - Dateien/usr/include/zconf.h
und/usr/include/zlib.h
. Sie können den Paketinhalt mit: anzeigendpkg -L zlib1g-dev
, das alle darin enthaltenen Dateien anzeigt.libz-dev
( auch in Debian ) wird zur Verfügung gestellt vonzlib1g-dev
über das Debian - PaketProvides: libz-dev
in der Zeile Quellcode - Paket des Debiandebian/control
- Datei. Auf diese Weise kann derapt
Verpackungsmanager diepython-lxml
Abhängigkeit des virtuellen Env-Pakets zur Kompilierungszeit vonlibz-dev
via auflösenzlib1g-dev
.Ich bin gerade auf dieses Problem gestoßen und widerspreche der akzeptierten Lösung "Ihre Make-Dateien sind kaputt" und "Host-Includes sollten niemals in eine Cross-Kompilierung aufgenommen 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 gestoppt, 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:
quelle
Ich hatte genau den gleichen Fehler. Die Installation von zlib-devel löste mein Problem. Geben Sie den Befehl ein und installieren Sie das zlib-Paket.
Unter Linux:
Auf Centos:
quelle
Dies bedeutet, dass Sie darum gebeten haben, die Bibliothek 'libz.a' oder 'libz.so' aufzunehmen, die ein Komprimierungspaket enthält. Obwohl der Compiler einige Dateien gefunden hat, war keine davon für den von Ihnen verwendeten Build geeignet.
Sie müssen entweder Ihre Build-Parameter ändern oder die richtige Bibliothek installieren oder angeben, wo sich die richtige Bibliothek in der Link-Befehlszeile mit einer
-L/where/it/is/lib
Typoption befindet.quelle
Eine weitere 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 verknüpft werden kann (libz.a).
quelle
Versuchen Sie eine dieser drei Lösungen. Es muss funktionieren :):
In der Tat fehlt nicht der
lz
Befehl, sondern die Entwicklungsdateien für diezlib
Bibliothek. Sie sollten alsozlib1g-dev
lib for ex installieren , um es zu erhalten.Für rhel7-ähnliche Systeme ist das Paket
zlib-devel
quelle
Dies zeigt Ihnen Hinweise, warum der Linker die installierte Bibliothek nicht möchte:
Ich hatte das gleiche Problem in einem anderen Kontext: Mein System /lib/libz.so.1 hatte unbefriedigte Abhängigkeiten von libc, weil ich versuchte, eine Verbindung zu einer anderen Version des Betriebssystems herzustellen.
quelle
für opensuse 12.3 (Dartmouth) (i586) sudo zypper installiere zlib-devel zlib-devel-static
quelle
Andere haben erwähnt, dass lib32z-dev das Problem löst, aber im Allgemeinen finden Sie die erforderlichen Pakete hier:
http://source.android.com/source/initializing.html Siehe "Erforderliche Pakete installieren"
quelle