Estou tentando compilar o código fonte do Android no Ubuntu 10.04. Eu recebo um erro dizendo:
/ usr / bin / ld: não é possível encontrar -lz
Você pode me dizer como posso corrigir isso? O que cannot find -lz
significa isso ? Aqui está a mensagem de erro completa:
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
E a minha versão da versão 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.
Eu já tenho a zlib1g-dev
biblioteca instalada:
$ sudo apt-get install zlib1g-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
zlib1g-dev is already the newest version.
(Eu entendo isso neste link .)
Para instalação em x64
zlib1g-dev
.Eu não preciso de todas as bibliotecas x86;)
fonte
zlib1g-dev
o metapacotelibz-dev
, como foi sugerido em outra resposta.zlib-static
.sudo apt-get install libz-dev
no ubuntu.fonte
python-lxml
exige amplamente a lógica contida na biblioteca zlib que ela não pode ou simplesmente não fornece. Se não conseguir acessar a biblioteca, porque está ausente ou com alguma barreira de permissões, não será possível criar / funcionar.python-lxml
depende de qualquer pacote queProvides: libz-dev
. Os programas C / C ++ são compilados e vinculados a bibliotecas que fornecem funções, rotinas e estruturas de dados. Sistemas Unix usar.so
,.a
,.la
arquivos e uso do Windows.dll
. Esses são arquivos de biblioteca compartilhada compilados, que contêm rotinas nas quais outros programas podem se vincular e usar para implementar alguma funcionalidade. Para este exemplo:libz
implementa funções de compactação e descompactação de dados .libz-dev
é um pacote virtual no Ubuntu (verifique isso no seu sistema com :)apt show libz-dev
. O outro pacotezlib1g-dev
fornecelibz-dev
, que inclui o arquivo da biblioteca compartilhada/usr/lib/x86_64-linux-gnu/libz.a
, e os arquivos do cabeçalho C/usr/include/zconf.h
&/usr/include/zlib.h
. Você pode visualizar o conteúdo do pacote com:,dpkg -L zlib1g-dev
que mostra todos os arquivos que ele contém.libz-dev
( também no Debian ) é fornecido porzlib1g-dev
meio do Debian PackageProvides: libz-dev
linha no do pacote fonte Debiandebian/control
arquivo. É assim que oapt
gerente de empacotamento sabe resolver apython-lxml
dependência do pacote virtualenv em tempo de compilaçãolibz-dev
viazlib1g-dev
.Acabei de encontrar esse problema e, ao contrário da solução aceita "seus arquivos make estão quebrados" e "as inclusões de host nunca devem ser incluídas em uma compilação cruzada"
A versão do Android inclui muitos executáveis de host usados pelo SDK para criar um aplicativo para Android. No meu caso, o make parou ao criar o zipalign, que é usado para otimizar um apk antes de instalar em um dispositivo Android.
A instalação de lib32z1-dev resolveu meu problema, no Ubuntu você pode instalá-lo com o seguinte comando:
fonte
Eu tive exatamente o mesmo erro, instalar o zlib-devel resolveu meu problema, digite o comando e instale o pacote zlib.
No linux:
No Centos:
fonte
Isso significa que você pediu para incluir a biblioteca 'libz.a' ou 'libz.so' que contém um pacote de compactação e, embora o compilador tenha encontrado alguns arquivos, nenhum deles era adequado para a compilação que você está usando.
Você precisa alterar os parâmetros de construção ou instalar a biblioteca correta ou especificar onde a biblioteca correta está na linha de comando do link com uma
-L/where/it/is/lib
opção de tipo.fonte
Outra causa possível: você passou --static para o vinculador, mas só possui uma versão dinâmica da libz (libz.so), mas não uma versão que pode ser vinculada estaticamente (libz.a).
fonte
Experimente uma dessas três soluções. Deve funcionar :):
Na verdade, o que está faltando não é o
lz
comando, mas os arquivos de desenvolvimento dazlib
biblioteca. Portanto, você deve instalar ozlib1g-dev
lib for ex para obtê-lo.Para sistemas do tipo rhel7, o pacote é
zlib-devel
fonte
Isso mostrará dicas sobre por que o vinculador não deseja a biblioteca instalada:
Eu tive o mesmo problema em um contexto diferente: meu sistema /lib/libz.so.1 tinha dependências não satisfeitas da libc porque estava tentando vincular novamente uma versão diferente do sistema operacional.
fonte
para opensuse 12.3 (Dartmouth) (i586), sudo zypper install zlib-devel zlib-devel-static
fonte
Outros mencionaram que a lib32z-dev resolve o problema, mas em geral os pacotes necessários podem ser encontrados aqui:
http://source.android.com/source/initializing.html Consulte "Instalando os pacotes necessários"
fonte