Estoy tratando de compilar el código fuente de Android en Ubuntu 10.04. Me sale un error que dice:
/ usr / bin / ld: no se puede encontrar -lz
¿Me puede decir cómo puedo solucionarlo? Que cannot find -lz
significa Aquí está el mensaje de error completo:
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
Y mi salida de versión GCC:
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.
Ya he la zlib1g-dev
instalación de la biblioteca:
$ sudo apt-get install zlib1g-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
zlib1g-dev is already the newest version.
(Lo obtengo de este enlace ).
Para instalar x64
zlib1g-dev
.No necesito todas las bibliotecas x86;)
fuente
zlib1g-dev
el metapaquetelibz-dev
, como se sugirió en otra respuesta.zlib-static
.sudo apt-get install libz-dev
en ubuntufuente
python-lxml
requiere lógica contenida en la biblioteca zlib que no puede o simplemente no proporciona. Si no puede llegar a la biblioteca, ya sea porque falta o por alguna barrera de permisos, no podrá construir / funcionar.python-lxml
Depende de cualquier paquete queProvides: libz-dev
. Los programas C / C ++ se compilan y vinculan con bibliotecas que proporcionan funciones, rutinas y estructuras de datos. Sistemas Unix utilizan.so
,.a
,.la
archivos y el uso de Windows.dll
. Estos son archivos de biblioteca compartida compilados, que contienen rutinas con las que otros programas pueden vincularse y utilizar para implementar alguna funcionalidad. Para este ejemplo:libz
implementa funciones de compresión y descompresión de datos .libz-dev
es un paquete virtual en Ubuntu (verifique esto en su sistema con :)apt show libz-dev
. El otro paquetezlib1g-dev
proporcionalibz-dev
, que incluye el archivo de biblioteca compartida/usr/lib/x86_64-linux-gnu/libz.a
y los archivos de encabezado C/usr/include/zconf.h
&/usr/include/zlib.h
. Puede ver el contenido del paquete con:,dpkg -L zlib1g-dev
que muestra todos los archivos que contiene.libz-dev
( también en Debian ) se proporciona azlib1g-dev
través de laProvides: libz-dev
línea del paquete Debian en el archivo del paquete fuente de Debiandebian/control
. Así es como elapt
administrador de empaques sabe cómo resolver lapython-lxml
dependencia del paquete virtualenv en tiempo de compilación enlibz-dev
viazlib1g-dev
.Acabo de encontrar este problema y contrario a la solución aceptada de "sus archivos de creación están rotos" y "el host incluye nunca debe incluirse en una compilación cruzada"
La compilación de Android incluye muchos ejecutables de host utilizados por el SDK para compilar una aplicación de Android. En mi caso, la marca se detuvo al construir zipalign, que se utiliza para optimizar un apk antes de instalarlo en un dispositivo Android.
Instalar lib32z1-dev resolvió mi problema, en Ubuntu puedes instalarlo con el siguiente comando:
fuente
Tuve exactamente el mismo error, la instalación de zlib-devel resolvió mi problema, escriba el comando e instale el paquete zlib.
En linux:
En Centos:
fuente
Significa que le pidió que incluyera la biblioteca 'libz.a' o 'libz.so' que contiene un paquete de compresión, y aunque el compilador encontró algunos archivos, ninguno de ellos era adecuado para la compilación que está utilizando.
Debe cambiar los parámetros de compilación o instalar la biblioteca correcta o especificar dónde está la biblioteca correcta en la línea de comando de enlace con una
-L/where/it/is/lib
opción de tipo.fuente
Otra posible causa: ha pasado - estático al enlazador, pero solo tiene una versión dinámica de libz (libz.so), pero no una versión que pueda estar enlazada estáticamente (libz.a).
fuente
Prueba una de esas tres soluciones. Debe funcionar :):
De hecho, lo que falta no es el
lz
comando, sino los archivos de desarrollo de lazlib
biblioteca, por lo que debe instalarzlib1g-dev
lib for ex para obtenerlo.Para sistemas similares a rhel7, el paquete es
zlib-devel
fuente
Esto le mostrará pistas sobre por qué el enlazador no quiere la biblioteca instalada:
Tuve el mismo problema en un contexto diferente: mi sistema /lib/libz.so.1 tenía dependencias insatisfechas en libc porque estaba tratando de volver a vincularme con una versión diferente del sistema operativo.
fuente
para opensuse 12.3 (Dartmouth) (i586) sudo zypper install zlib-devel zlib-devel-static
fuente
Otros han mencionado que lib32z-dev resuelve el problema, pero en general los paquetes necesarios se pueden encontrar aquí:
http://source.android.com/source/initializing.html Consulte "Instalación de paquetes necesarios"
fuente