web-dev-qa-db-fra.com

"/ usr/bin/ld: impossible de trouver -lz"

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

135
michael

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.

156
kylefinn

Pour x64, installez simplement zlib1g-dev.

Sudo apt-get install zlib1g-dev

Je n'ai pas besoin de toutes les librairies x86;)

89
phedoreanu

Sudo apt-get install libz-dev à Ubuntu. 

45
Siva mbigai M

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
31
Adam

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*
5
Abhi km

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

4
jhclark

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.

4
Jonathan Leffler

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.

2
qneill

pour opensuse 12.3 (Dartmouth) (i586) Sudo zypper installer zlib-devel zlib-devel-static

1
euthygenes

Essayez l'une de ces trois solutions. Ça doit marcher :):

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

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-devlib for ex pour l'obtenir.

0
DINA TAKLIT

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

0
Conley Owens

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;).

0
DINA TAKLIT