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.
( このリンク から取得します。)
まったく同じエラーが発生しましたが、あなたと同様、zlib1g-devをインストールしても修正されませんでした。 lib32z1-devをインストールすると、それを超えてしまいました。私は64ビットシステムを使用していますが、32ビットライブラリが必要だったようです。
X64の場合は、zlib1g-devをインストールするだけです。
Sudo apt-get install zlib1g-dev
すべてのx86ライブラリが必要というわけではありません;)
Sudo apt-get install libz-dev
はUbuntuで。
私はちょうどこの問題に遭遇し、「あなたのメイクファイルが壊れている」と「ホストインクルードをクロスコンパイルに含めるべきではない」という受け入れられている解決策に反して
Androidビルドには、AndroidアプリをビルドするためにSDKで使用される多くのホスト実行可能ファイルが含まれています。私の場合、Androidデバイスにインストールする前にapkを最適化するために使用されるzipalignのビルド中にmakeが停止しました。
Lib32z1-devをインストールすると、私の問題は解決しました。Ubuntuでは、次のコマンドでインストールできます。
Sudo apt-get install lib32z1-dev
まったく同じエラーが発生しました。zlib-develをインストールすると問題が解決しました。コマンドを入力してzlibパッケージをインストールします。
Linuxの場合:
Sudo apt-get install zlib*
Centosの場合:
Sudo yum install zlib*
別の考えられる原因:--staticをリンカーに渡しましたが、libz(libz.so)の動的バージョンのみがあり、静的にリンクできるバージョン(libz.a)がありません。
これは、圧縮パッケージを含むライブラリ「libz.a」または「libz.so」を含めるように要求したことを意味し、コンパイラはいくつかのファイルを検出しましたが、使用しているビルドに適したものはありませんでした。
ビルドパラメータを変更するか、正しいライブラリをインストールするか、-L/where/it/is/lib
typeオプションを使用してリンクコマンドライン上の正しいライブラリの場所を指定する必要があります。
これにより、インストールされたライブラリをリンカが望まない理由についての手がかりが表示されます。
LD_DEBUG=all make ...
異なるコンテキストで同じ問題が発生しました。異なるバージョンのOSで再リンクしようとしたため、システム/lib/libz.so.1がlibcに依存していませんでした。
これらの3つのソリューションのいずれかを試してください。動作する必要があります:):
実際、欠落しているのはlz
コマンドではなく、zlib
ライブラリの開発ファイルです。したがって、exを取得するにはzlib1g-dev
libをインストールする必要があります。
opensuse 12.3(Dartmouth)(i586)の場合、sudo zypper install zlib-devel zlib-devel-static
他の人はlib32z-devが問題を解決すると言及しましたが、一般に必要なパッケージはここにあります:
http://source.Android.com/source/initializing.html 「必要なパッケージのインストール」を参照
それを追加したいだけです:
tiramisu Subモジュールをインストール(ハライドをインストール)しようとすると、同様のエラーが表示されます
read -lz -o bin/libHalide.so
/usr/bin/ld: cannot find -lz
そして、@ phedoreanuを共有していたことが、私のpbを修正しました。
Sudo apt-get install zlib1g-dev
したがって、ティラミスのウルインストールにこのエラーが表示されても心配はありません;彼らのための薬です;)。