Я пытаюсь скомпилировать исходный код 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.
(Я получаю это по этой ссылке .)
Для x64 установите
zlib1g-dev
.Мне не нужны все библиотеки x86;)
источник
zlib1g-dev
через метапакетlibz-dev
, как было предложено в другом ответе.zlib-static
.sudo apt-get install libz-dev
в убунту.источник
python-lxml
требует логики, содержащейся в библиотеке zlib, которую она не может или просто не предоставляет сама. Если он не может добраться до библиотеки, либо из-за его отсутствия, либо из-за какого-то барьера разрешений, он не сможет создать / функционировать.python-lxml
зависит от любого пакета, которыйProvides: libz-dev
. Программы на C / C ++ компилируются и связаны с библиотеками, которые предоставляют функции, процедуры и структуры данных. Системы Unix используют.so
,.a
,.la
файлы & использование ОС Windows.dll
. Это скомпилированные файлы общей библиотеки, которые содержат подпрограммы, с которыми другие программы могут ссылаться и использовать для реализации некоторых функций. Для этого примера:libz
реализует функции сжатия и распаковки данных .libz-dev
это виртуальный пакет в Ubuntu (проверьте это в вашей системе с помощью :)apt show libz-dev
. Другой пакетzlib1g-dev
содержитlibz-dev
файл общей библиотеки/usr/lib/x86_64-linux-gnu/libz.a
и файлы заголовка C/usr/include/zconf.h
&/usr/include/zlib.h
. Вы можете просмотреть содержимое пакета с помощью:,dpkg -L zlib1g-dev
который показывает все файлы, которые он содержит.libz-dev
( также в Debian ) будет предусмотрено поzlib1g-dev
через Debian пакетProvides: libz-dev
линии в пакете исходного кода в Debiandebian/control
файл. Вот какapt
менеджер пакетов знает, как разрешитьpython-lxml
зависимость пакета virtualenv во время компиляции отlibz-dev
viazlib1g-dev
.Я только что столкнулся с этой проблемой, и вопреки общепринятому решению «ваши файлы make испорчены» и «включения хоста никогда не должны включаться в кросс-компиляцию»
Сборка Android включает множество исполняемых файлов хоста, используемых SDK для сборки приложения Android. В моем случае make остановился во время сборки zipalign, который используется для оптимизации apk перед установкой на устройство Android.
Установка lib32z1-dev решила мою проблему, под Ubuntu вы можете установить ее с помощью следующей команды:
источник
У меня была та же самая ошибка, Установка zlib-devel решила мою проблему, Введите команду и установите пакет zlib.
На Linux:
На Centos:
источник
Это означает, что вы попросили включить библиотеку 'libz.a' или 'libz.so', содержащую пакет сжатия, и, хотя компилятор обнаружил некоторые файлы, ни один из них не подходит для используемой вами сборки.
Вам нужно либо изменить параметры сборки, либо установить нужную библиотеку, либо указать в командной строке ссылки нужную библиотеку с
-L/where/it/is/lib
параметром типа.источник
Другая возможная причина: вы передали --static компоновщику, но у вас есть только динамическая версия libz (libz.so), но нет версии, которая может быть статически связана (libz.a).
источник
Попробуйте одно из этих трех решений. Должно работать :)
На самом деле отсутствует не
lz
команда, а файлы для разработкиzlib
библиотеки. Так что вам нужно установитьzlib1g-dev
lib для ex, чтобы получить ее.Для rhel7-подобных систем пакет
zlib-devel
источник
Это покажет вам, почему компоновщик не хочет, чтобы установленная библиотека:
У меня была та же проблема в другом контексте: моя система /lib/libz.so.1 имела неудовлетворенные зависимости от libc, потому что я пыталась перепривязать другую версию ОС.
источник
для opensuse 12.3 (Дартмут) (i586) sudo zypper install zlib-devel zlib-devel-static
источник
Другие упоминали, что lib32z-dev решает проблему, но в целом необходимые пакеты можно найти здесь:
http://source.android.com/source/initializing.html См. «Установка необходимых пакетов».
источник