"/ usr / bin / ld: не могу найти -lz" - PullRequest
144 голосов
/ 30 июля 2010

Я пытаюсь скомпилировать исходный код 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:

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.

У меня уже установлена ​​библиотека 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.

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

Ответы [ 12 ]

160 голосов
/ 22 апреля 2011

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

96 голосов
/ 05 апреля 2014

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

sudo apt-get install zlib1g-dev

Мне не нужны все библиотеки x86;)

46 голосов
/ 13 августа 2014

sudo apt-get install libz-dev в убунту.

31 голосов
/ 01 мая 2011

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

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

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

sudo apt-get install lib32z1-dev
5 голосов
/ 12 марта 2018

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

В Linux:

sudo apt-get install zlib*

На Centos:

sudo yum install zlib*
4 голосов
/ 09 января 2014

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

4 голосов
/ 30 июля 2010

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

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

2 голосов
/ 15 мая 2013

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

LD_DEBUG=all make ...

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

1 голос
/ 06 февраля 2019

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

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

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

1 голос
/ 28 ноября 2013

для открытого использования 12,3 (Дартмут) (i586) sudo zypper install zlib-devel zlib-devel-static

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...