J'essaie de compiler le code source Android sous Ubuntu 10.04. Je reçois une erreur en disant:
/ usr/bin/ld: impossible de trouver -lz
Pouvez-vous s'il vous plaît me dire comment puis-je résoudre ce problème? Que signifie cannot find -lz
? Voici le message d'erreur complet:
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
Et ma version GCC sortie:
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.
J'ai déjà la bibliothèque zlib1g-dev
installée:
$ Sudo apt-get install zlib1g-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
zlib1g-dev is already the newest version.
(Je reçois cela de ce lien .)
J'ai eu exactement la même erreur et, comme vous, installer zlib1g-dev ne résout pas le problème. L'installation de lib32z1-dev m'a permis de le dépasser. J'ai un système 64 bits et il semble que cela voulait la bibliothèque 32 bits.
Pour x64, installez simplement zlib1g-dev.
Sudo apt-get install zlib1g-dev
Je n'ai pas besoin de toutes les librairies x86;)
Sudo apt-get install libz-dev
à Ubuntu.
Je viens de rencontrer ce problème et contrairement à la solution acceptée "vos fichiers de make sont cassés" et "l'hôte inclut ne doit jamais être inclus dans une compilation croisée"
La version Android comprend de nombreux exécutables de l’hôte utilisés par le SDK pour créer une application Android . Dans mon cas, la construction s’est arrêtée lors de la construction de zipalign, utilisée pour optimiser un apk avant de l’installer sur un appareil Android.
L'installation de lib32z1-dev a résolu mon problème. Sous Ubuntu, vous pouvez l'installer à l'aide de la commande suivante:
Sudo apt-get install lib32z1-dev
J'ai eu exactement la même erreur. L’installation de zlib-devel a résolu mon problème, Tapez la commande et installez le paquet zlib.
Sur linux:
Sudo apt-get install zlib*
Sur Centos:
Sudo yum install zlib*
Autre cause possible: vous avez passé --static à l'éditeur de liens, mais vous ne disposez que d'une version dynamique de libz (libz.so), mais pas d'une version pouvant être liée statiquement (libz.a).
Cela signifie que vous lui avez demandé d'inclure la bibliothèque 'libz.a' ou 'libz.so' contenant un package de compression, et bien que le compilateur ait trouvé certains fichiers, aucun d'entre eux n'était adapté à la construction que vous utilisez.
Vous devez soit modifier vos paramètres de construction, soit installer la bonne bibliothèque, soit spécifier l'emplacement de la bonne bibliothèque sur la ligne de commande du lien avec une option de type -L/where/it/is/lib
.
Cela vous montrera des indices sur la raison pour laquelle l'éditeur de liens ne veut pas de la bibliothèque installée:
LD_DEBUG=all make ...
J'ai eu le même problème dans un contexte différent: mon système /lib/libz.so.1 avait des dépendances insatisfaites sur libc car j'essayais de me relier à une version différente du système d'exploitation.
pour opensuse 12.3 (Dartmouth) (i586) Sudo zypper installer zlib-devel zlib-devel-static
Essayez l'une de ces trois solutions. Ça doit marcher :):
En fait, ce qui manque, ce n'est pas la commande lz
, mais les fichiers de développement de la bibliothèque zlib
. Vous devez donc installer zlib1g-dev
lib for ex pour l'obtenir.
D'autres ont mentionné que lib32z-dev résout le problème, mais en général, les paquets nécessaires peuvent être trouvés ici:
http://source.Android.com/source/initializing.html Voir "Installation des packages requis".
Je veux juste ajouter que:
je reçois une erreur similaire une fois que j'ai essayé d'installer Tiramisu Sub modules (installer Halide) l'erreur était
read -lz -o bin/libHalide.so
/usr/bin/ld: cannot find -lz
et en faisant ce partagé @phedoreanu fixé mon pb.
Sudo apt-get install zlib1g-dev
Donc pas d'inquiétude si même cette erreur apparaît dans votre installation de Tiramisu, c'est un médicament pour elle;).