“ / usr / bin / ld:cannot find -lz”


172

Ubuntu 10.04でAndroidソースコードをコンパイルしようとしています。私は言ってエラーが出ます、

/ 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.

(私はこのリンクからそれを得ます。)

回答:


171

私はまったく同じエラーがあり、あなたと同じように、zlib1g-devをインストールしても修正されませんでした。lib32z1-devをインストールすると、私はそれを乗り越えました。私は64ビットシステムを使用していますが、32ビットライブラリが必要だったようです。


25
ここでは、Kubuntu 12.04 x64上のlibz-dev(zlib1g-devの仮想パッケージ)で動作しました。
Qsiris 2013年

10
Ubuntu 14.04 LTS / trustyのpipを介してPython用のlxml-3.4.0をインストール/ビルドするのにも役立ちました。ありがとう!
マリアン

117

x64インストールの場合zlib1g-dev

sudo apt-get install zlib1g-dev

すべてのx86ライブラリは必要ありません;)


9
これは、ubuntu 14.04上のpipを介してlxmlをインストールするために機能したことを確認できます
mwjackson '19年

2
mwjacksonと同じですが、別の回答で提案されているようにzlib1g-dev、メタパッケージを介して取得しましたlibz-dev
mknaf 2015年

1
これが機能しない場合は、静的バージョンを試してくださいzlib-static
DearVolt 2017年

3
amd64 Ubuntu 18.04 LTS、Bionic Beaver
deinerson1で

52

sudo apt-get install libz-dev Ubuntuで。


2
なぜこれが必要なのか誰かが光を当てることができますか?このパッケージをインストールした後にのみ、仮想環境にpython-lxmlをインストールできました。でも、グローバルにインストールしてみれば何の問題もありません。:\
cballenar 2016

そのケースについては明確ではありませんpython-lxmlが、zlibライブラリに含まれているロジックを広く必要としていますが、ロジック自体は提供できません。ライブラリが見つからないか、アクセス許可のバリアが原因でライブラリに到達できない場合は、ビルド/機能できません。
ti7

@cballenar:短い答え:依存関係 python-lxmlそのパッケージに依存しますProvides: libz-dev。C / C ++プログラムは、関数、ルーチン、およびデータ構造を提供するライブラリに対してコンパイルおよびリンクされます。Unixシステムでは使用.so.a.laファイルおよびWindowsの使用を.dll。これらはコンパイルされた共有ライブラリファイルで、他のプログラムがリンクして、いくつかの機能を実装するために使用できるルーチンが含まれています。この例の場合:データの圧縮と解凍機能をlibz実装します
TrinitronX

@cballenar:長い答え/詳細(パート1):Ubuntuの仮想パッケージです(システムでこれを確認するにlibz-devは:)。もう1つのパッケージは、共有ライブラリファイルとCヘッダーファイル&を含むを提供します。パッケージの内容は、に含まれるすべてのファイルを表示するで表示できます。apt show libz-devzlib1g-devlibz-dev/usr/lib/x86_64-linux-gnu/libz.a /usr/include/zconf.h/usr/include/zlib.hdpkg -L zlib1g-dev
TrinitronX

@cballenar:長い回答(パート2):すでに述べたようにlibz-devDebianでも)、DebianソースパッケージのファイルのDebianパッケージ行を介して提供されます。これはどのようにあるパッケージマネージャが解決するのに知っている上でコンパイル時virtualenvのパッケージの依存関係を経由して。zlib1g-devProvides: libz-dev debian/controlaptpython-lxmllibz-devzlib1g-dev
TrinitronX

31

私はこの問題に遭遇し、「あなたのメイクファイルが壊れています」と「ホストインクルードはクロスコンパイルに含めるべきではありません」という受け入れられている解決策に反しています

Androidビルドには、SDKがAndroidアプリをビルドするために使用する多くのホスト実行可能ファイルが含まれています。私の場合、Androidデバイスにインストールする前にapkを最適化するために使用されるzipalignの構築中にmakeが停止しました。

lib32z1-devをインストールすると問題が解決しました。Ubuntuでは、次のコマンドでインストールできます。

sudo apt-get install lib32z1-dev

8

まったく同じエラーが発生しました。zlib-develをインストールすると問題が解決しました。コマンドを入力して、zlibパッケージをインストールします。

Linuxの場合:

sudo apt-get install zlib*

Centosの場合:

sudo yum install zlib*

4

これは、圧縮パッケージを含むライブラリ「libz.a」または「libz.so」を含めるように要求したことを意味します。コンパイラはいくつかのファイルを検出しましたが、使用しているビルドには適していませんでした。

ビルドパラメータを変更する必要があるか、正しいライブラリをインストールする必要があるか、-L/where/it/is/libtypeオプションを使用して、リンクコマンドライン上の正しいライブラリの場所を指定する必要があります。


4

別の考えられる原因:--staticをリンカーに渡しましたが、動的バージョンのlibz(libz.so)のみがあり、静的にリンクできるバージョン(libz.a)はありません。


4

これら3つのソリューションのいずれかを試してください。それは動作するはずです:):

  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ため、exのlibをインストールしてそれを取得する必要があります。

rhel7のようなシステムの場合、パッケージは zlib-devel


3

これは、リンカーがインストールされたライブラリを望まない理由についての手がかりを示します。

LD_DEBUG=all make ...

私は別のコンテキストで同じ問題を抱えていました:私のシステム/lib/libz.so.1は、異なるバージョンのOSで再リンクしようとしていたため、libcへの依存関係に満足できませんでした。


1

opensuse 12.3(ダートマス)(i586)の場合、sudo zypperインストールzlib-devel zlib-devel-static


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.