"/usr/bin/ld: не удается найти -lz"

Я пытаюсь скомпилировать исходный код Android в Ubuntu 10.04. Я получаю сообщение об ошибке,

/usr/bin/ld: не удается найти -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.

(Я получаю это от эту ссылку.)

Ответ 1

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

Ответ 2

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

sudo apt-get install zlib1g-dev

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

Ответ 3

sudo apt-get install libz-dev в ubuntu.

Ответ 4

Я только столкнулся с этой проблемой и вопреки принятому решению "ваши файлы с файлами сломаны", и "хост-компоненты никогда не должны включаться в кросс-компиляцию"

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

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

sudo apt-get install lib32z1-dev

Ответ 5

У меня была та же самая ошибка, Установка zlib-devel решила мою проблему, Введите команду и установите пакет zlib.

На Linux:

sudo apt-get install zlib*

На Centos:

sudo yum install zlib*

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

LD_DEBUG=all make ...

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

Ответ 9

для opensuse 12.3 (Дартмут) (i586) sudo zypper install zlib-devel zlib-devel-static

Ответ 10

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

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

Ответ 11

Просто хочу добавить это:

Я получаю аналогичную ошибку, когда пытаюсь установить модули Tiramisu Sub (установить Halide), ошибка была

read -lz -o bin/libHalide.so
/usr/bin/ld:  cannot find -lz 

и делаю то, что поделился @phedoreanu исправил мой пб.

sudo apt-get install zlib1g-dev

Так что не беспокойтесь, если даже эта ошибка появляется в вашей установке Tiramisu, это лекарство от нее;).

Ответ 12

Попробуйте одно из этих трех решений. Должно работать :)

  1. sudo apt-get установить zlib1g-dev
  2. sudo apt-get установить libz-dev
  3. sudo apt-get установить lib32z1-dev

На самом деле отсутствует не команда lz, а файлы для разработки библиотеки zlib. Так что для ее получения необходимо установить lib zlib1g-dev для ex.