2010-07-30 2 views
113

Я пытаюсь скомпилировать исходный код Android в Ubuntu 10.04. Я получаю сообщение об ошибке сказав,"/ usr/bin/ld: не удалось найти -lz"

/USR/бен/л.д.: не может найти -lz

Можете ли вы сказать мне, как я могу это исправить? Что означает cannot find -lz? Вот полное сообщение об ошибке:

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 

И мой GCC версии выход:

[email protected]:/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. 

Я уже установлен zlib1g-dev библиотека:

$ sudo apt-get install zlib1g-dev 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
zlib1g-dev is already the newest version. 

(я понимаю, что от this link.)

ответ

4

Это означает, что вы попросили его включить библиотеку libz.a или 'libz.so', содержащий пакет сжатия, и хотя компилятор нашел некоторые файлы, ни один из них не был подходящим для используемой сборки.

Вам либо нужно изменить параметры сборки, либо вам нужно установить правильную библиотеку, либо вам нужно указать, где находится правильная библиотека в командной строке ссылки с параметром типа -L/where/it/is/lib.

145

У меня была такая же ошибка, как и у вас, установка zlib1g-dev не исправила ее. Установка lib32z1-dev заставила меня пройти мимо него. У меня 64-битная система, и мне кажется, что ей нужна 32-битная библиотека.

+18

Он работал с libz-dev (виртуальный пакет для zlib1g-dev) на Kubuntu 12.04 x 64. – Qsiris

+1

помог мне по совершенно другой проблеме. Спасибо :-) – mgjk

+0

Это должен быть принятый ответ – Speccy

30

Я просто столкнулся с этой проблемой и вопреки принятым решением «ваши замыкающие файлы разбиты» и «хозяин не включает в себя не должен быть включен в кресте компиляции»

андроид сборки включает в себя множество исполняемых файлов хоста, используемых SDK для создания приложения для Android. В моем случае make остановился при построении zipalign, который используется для оптимизации apk перед установкой на устройстве Android.

Установка lib32z1-DEV решить мою проблему под Ubuntu вы можете установить его с помощью следующей команды:

sudo apt-get install lib32z1-dev 
0

Другие упоминали, что lib32z-DEV решает эту проблему, но в целом можно найти необходимые пакеты здесь:

http://source.android.com/source/initializing.html См «Установка необходимых пакетов»

2

Это покажет вам подсказки о том, почему линкер не хочет установленную библиотеку:

LD_DEBUG=all make ... 

У меня была та же проблема в другом контексте: моя система /lib/libz.so.1 была неявные зависимости от LIBC, потому что я пытался перелинковать на другую версию операционной системы.

1

для OpenSUSE 12.3 (Дартмут) (i586) Судо Zypper установить Zlib-разви Zlib-разви-статические

3

Другая возможная причина: Вы уже прошли --static линкера, но у вас есть только динамический версия libz (libz.так), но не версию, которая может быть статически связана (libz.a).

65

Для x64 просто установите zlib1g-dev.

sudo apt-get install zlib1g-dev 

Мне не нужны все x86 LIBS;)

+7

может подтвердить, что это работало для установки lxml через pip на ubuntu 14.04 – mwjackson

+0

для меня как для mwjackson, хотя я получил 'zlib1g-dev' через метапакет' libz-dev', как было предложено в другом ответе. – mknaf

+0

может подтвердить, что zlib1g-dev хорошо работает на Debian 8 Jessie 64 bit –

39
sudo apt-get install libz-dev

в убунту.

+2

Также работает под Debian (Jessie). –

+1

Может ли кто-нибудь пролить свет на то, почему это необходимо? Я смог установить python-lxml в виртуальной среде ТОЛЬКО после установки этого пакета. Однако, если бы я попытался установить его глобально, у меня не было бы проблем вообще. : \ – cballenar

Смежные вопросы