development

“/ usr / bin / ld : -lz를 찾을 수 없습니다”

big-blog 2020. 6. 9. 07:44
반응형

“/ usr / bin / ld : -lz를 찾을 수 없습니다”


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 우분투에서.


방금이 문제가 발생하여 "메이크 파일이 손상되었습니다"및 "호스트 포함을 크로스 컴파일에 포함해서는 안됩니다"라는 승인 된 솔루션과 반대로

Android 빌드에는 SDK가 Android 앱을 빌드하는 데 사용하는 많은 호스트 실행 파일이 포함되어 있습니다. 내 경우에는 안드로이드 장치에 설치하기 전에 APK를 최적화하는 데 사용되는 zipalign을 빌드하는 동안 make가 중지되었습니다.

lib32z1-dev를 설치하면 내 문제가 해결되었으며 Ubuntu에서 다음 명령으로 설치할 수 있습니다.

sudo apt-get install lib32z1-dev

zlib-devel을 설치하면 문제가 해결되었습니다. 명령을 입력하고 zlib 패키지를 설치하십시오.

리눅스에서 :

sudo apt-get install zlib*

Centos에서 :

sudo yum install zlib*

압축 패키지를 포함하는 라이브러리 'libz.a'또는 'libz.so'를 포함하도록 요청했으며 컴파일러에서 일부 파일을 찾았지만 사용중인 빌드에 적합한 파일은 없었습니다.

빌드 매개 변수를 변경하거나 올바른 라이브러리를 설치해야하거나 -L/where/it/is/lib유형 옵션으로 링크 명령 행에서 올바른 라이브러리가있는 위치를 지정해야합니다 .


또 다른 가능한 원인 : --static을 링커에 전달했지만 동적 버전의 libz (libz.so) 만 있지만 정적으로 연결할 수있는 버전 (libz.a)은 없습니다.


링커가 설치된 라이브러리를 원하지 않는 이유에 대한 단서가 표시됩니다.

LD_DEBUG=all make ...

다른 컨텍스트에서 동일한 문제가 발생했습니다. 시스템 /lib/libz.so.1은 다른 버전의 OS에서 다시 연결하려고했기 때문에 libc에 대한 종속성이 만족스럽지 않았습니다.


opensuse 12.3 (Dartmouth) (i586) sudo zypper 설치용 zlib-devel zlib-devel-static


이 세 가지 솔루션 중 하나를 시도하십시오. 작동해야합니다 :) :

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

In fact what is missing is not the lz command, but the development files for the zlib library.So you should install zlib1g-devlib for ex to get it.


Others have mentioned that lib32z-dev solves the problem, but in general the required packages can be found here:

http://source.android.com/source/initializing.html See "Installing required packages"


Just wanna add that :

i get a similar error once i tried to install Tiramisu Sub modules (install Halide) the error was

read -lz -o bin/libHalide.so
/usr/bin/ld:  cannot find -lz 

and doing what shared @phedoreanu fixed my pb.

sudo apt-get install zlib1g-dev

So no worries if even this error appear in ur installation of Tiramisu their is a medicine for it ;).

참고URL : https://stackoverflow.com/questions/3373995/usr-bin-ld-cannot-find-lz

반응형