“/ Usr / bin / ld: -lz bulunamıyor”


172

Ubuntu 10.04 altında Android kaynak kodunu derlemeye çalışıyorum. Bir hata mesajı alıyorum,

/ usr / bin / ld: -lz bulunamıyor

Bana nasıl düzeltebileceğimi söyler misiniz? Ne anlama cannot find -lzgeliyor? İşte tam hata mesajı:

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

Ve benim GCC sürüm çıktım:

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.

Zaten zlib1g-devyüklü kütüphane var :

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

(Bunu bu bağlantıdan alıyorum .)

Yanıtlar:


171

Aynı hatayı aldım ve sizin gibi zlib1g-dev'in yüklenmesi sorunu çözmedi. Lib32z1-dev'i kurmak beni geçti. 64 bit sistemim var ve 32 bit kitaplığı istiyormuş gibi görünüyor.


25
Kubuntu 12.04 x64'te libz-dev (zlib1g-dev için sanal paket) ile çalıştı.
Qsiris

10
Ayrıca Ubuntu 14.04 LTS / güvenilir üzerinde pip üzerinden Python için lxml-3.4.0 yüklememe / inşa etmeme yardımcı oldu. Teşekkürler!
Marian

117

X64 kurulumu için zlib1g-dev.

sudo apt-get install zlib1g-dev

Tüm x86 kütüphanelerine ihtiyacım yok;)


9
ubuntu
14.04

2
bende rağmen mwjackson gelince benim için aynısını, zlib1g-devmeta pakettir yoluyla libz-dev, başka bir cevap öne sürüldü.
mknaf

1
Bu işe yaramazsa, statik sürümü deneyin zlib-static.
DearVolt

3
Onaylandı amd64 Ubuntu 18.04 LTS, Biyonik Kunduz
deinerson1

52

sudo apt-get install libz-dev Ubuntu'da.


2
Birisi bunun neden gerekli olduğuna ışık tutabilir mi? SADECE bu paketi yükledikten sonra sanal bir ortama python-lxml yükleyebildim. Ancak global olarak yüklemeyi deneseydim, hiç sorun yaşamazdım. : \
cballenar

Özel olarak bu durumdan emin değilim, ancak geniş python-lxmlolarak zlib kütüphanesinde içeremediği veya sağlayamadığı mantığı gerektirir. Kitaplık eksik ya da bazı izin engelleri nedeniyle erişemezse, yapı / işlev yapamaz.
ti7

@cballenar: Kısa cevap: Bağımlılıklar ! python-lxmlherhangi bir pakete bağlıdır Provides: libz-dev. C / C ++ programları derlenir ve işlevler, rutinler ve veri yapıları sağlayan kütüphanelere bağlanır. Unix sistemleri kullanmak .so, .a, .ladosyaları ve Pencereler kullanımını .dll. Bunlar, diğer programların bağlanabileceği ve bazı işlevleri uygulamak için kullanabileceği rutinleri içeren derlenmiş paylaşılan kütüphane dosyalarıdır. Bu örnek için: veri sıkıştırma ve açma fonksiyonlarını libzuygular .
TrinitronX

@cballenar: Uzun cevap / ayrıntılar ( bölüm 1 ): libz-devBir olan sanal paket Ubuntu üzerinde (birlikte sisteminizde Bunu doğrulamak: apt show libz-dev). Diğer paket zlib1g-devsağlar libz-devpaylaşılan kitaplığı dosyasını içeren, /usr/lib/x86_64-linux-gnu/libz.ave C Başlık dosyaları /usr/include/zconf.h & /usr/include/zlib.h. Paket içeriğini dpkg -L zlib1g-dev, içerdiği tüm dosyaları gösteren : ile görüntüleyebilirsiniz .
TrinitronX

@cballenar: Uzun cevap ( bölüm 2 ): gibi, söz libz-dev( ayrıca Debian'daki ) olduğu sağlanan tarafından zlib1g-devDebian Paketi aracılığıyla Provides: libz-devhat Debian kaynak paketin debian/control dosyada. Bu nasıl aptpaketleme yöneticisi çözmeye bilir python-lxmlüzerindeki derleme zamanı Virtualenv paket bağımlılığı libz-devyoluyla zlib1g-dev.
TrinitronX

31

Ben sadece bu sorunla karşılaştı ve kabul edilen çözümün aksine "dosyalarınız bozuldu" ve "ana bilgisayar asla çapraz derlemeye dahil edilmemelidir"

Android yapı, bir android uygulaması oluşturmak için SDK tarafından kullanılan birçok ana bilgisayar yürütülebilir dosya içerir. Benim durumumda, bir android cihaza yüklemeden önce bir apk optimize etmek için kullanılan zipalign oluştururken marka durdu.

Lib32z1-dev'i kurmak sorunumu çözdü, Ubuntu altında aşağıdaki komutla kurabilirsiniz:

sudo apt-get install lib32z1-dev

8

Aynı hatayla karşılaştım, zlib-devel kurulumu sorunumu çözdü, komutu yazın ve zlib paketini kurun.

Linux'ta:

sudo apt-get install zlib*

Centos'ta:

sudo yum install zlib*

4

Bu, bir sıkıştırma paketi içeren 'libz.a' veya 'libz.so' kütüphanesini içermesini istediğiniz anlamına gelir ve derleyici bazı dosyalar bulsa da, hiçbiri kullandığınız yapı için uygun değildi.

Derleme parametrelerinizi değiştirmeniz veya doğru kitaplığı yüklemeniz ya da bir -L/where/it/is/libyazma seçeneğiyle bağlantı komut satırında doğru kitaplığın nerede olduğunu belirtmeniz gerekir .


4

Başka bir olası neden: - bağlayıcıya statik olarak geçtiniz, ancak yalnızca dinamik bir libz sürümünüz var (libz.so), ancak statik olarak bağlanabilen bir sürümünüz yok (libz.a).


4

Bu üç çözümden birini deneyin. Çalışmalıdır :):

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

Aslında eksik olan lzkomut değil , zlibkütüphanenin geliştirme dosyalarıdır. Yani zlib1g-devex için lib'i yüklemelisiniz .

Rhel7 benzeri sistemler için paket zlib-devel


3

Bu, bağlayıcının neden kurulu kütüphaneyi istemediğine dair ipuçlarını gösterecektir:

LD_DEBUG=all make ...

Aynı sorunu farklı bir bağlamda yaşadım: sistemimin /lib/libz.so.1, işletim sisteminin farklı bir sürümüne yeniden bağlanmaya çalıştığım için libc'ye karşı tatminsiz bağımlılıklar yaşadım.


1

opensuse 12.3 için (Dartmouth) (i586) sudo zypper install zlib-devel zlib-devel-static


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.