“/ usr / bin / ld : -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

10
또한 Ubuntu 14.04 LTS / trusty에서 pip를 통해 Python 용 lxml-3.4.0을 설치 / 빌드하는 데 도움이되었습니다. 감사!
Marian

117

x64 설치의 경우 zlib1g-dev.

sudo apt-get install zlib1g-dev

모든 x86 라이브러리가 필요하지는 않습니다.)


9
이것은 우분투 14.04에서 pip를 통해 lxml을 설치했는지 확인할 수 있습니다
mwjackson

2
다른 답변에서 제안한 것처럼 zlib1g-devmetapackage를 통해 얻었지만 mwjackson과 동일합니다 libz-dev.
mknaf

1
그래도 문제가 해결되지 않으면 정적 버전을 사용해보십시오 zlib-static.
DearVolt

3
amd64에서 확인 Ubuntu 18.04 LTS, Bionic Beaver
deinerson1

52

sudo apt-get install libz-dev 우분투에서.


2
왜 이것이 필요한지 누군가가 밝힐 수 있습니까? 이 패키지를 설치 한 후에 만 ​​가상 환경에 python-lxml을 설치할 수있었습니다. 그러나 전 세계적으로 설치하려고하면 아무런 문제가 없습니다. : \
cballenar

이 경우에 대해서는 확실하지 않지만 python-lxmlzlib 라이브러리에 포함 된 로직이 필요합니다. 라이브러리가 없거나 권한 장벽으로 인해 라이브러리에 도달 할 수 없으면 빌드 / 기능 할 수 없습니다.
ti7

@cballenar : 짧은 대답 : 종속성 ! python-lxml패키지에 따라 다릅니다 Provides: libz-dev. C / C ++ 프로그램은 함수, 루틴 및 데이터 구조를 제공하는 라이브러리에 대해 컴파일 및 링크됩니다. 유닉스 시스템 사용 .so, .a, .la파일 및 윈도우를 사용 .dll. 이 파일은 다른 프로그램이 링크하여 일부 기능을 구현하는 데 사용할 수있는 루틴을 포함하는 컴파일 된 공유 라이브러리 파일입니다. 이 예의 경우 : 데이터 압축 및 압축 해제 기능을 libz구현 합니다.
TrinitronX

@cballenar : 긴 답변 / 세부 정보 ( 1 부 ) : 우분투 libz-dev가상 패키지 입니다 (시스템에서 다음을 확인 하십시오 :) apt show libz-dev. 다른 패키지 zlib1g-devlibz-dev공유 라이브러리 파일 /usr/lib/x86_64-linux-gnu/libz.aC 헤더 파일 /usr/include/zconf.h &을 포함 하는를 제공합니다/usr/include/zlib.h . dpkg -L zlib1g-dev포함 된 모든 파일을 표시 하는 패키지 내용을로 볼 수 있습니다 .
TrinitronX

@cballenar : 긴 답변 ( 2 부 ) : 언급 한 바와 같이 libz-dev( 데비안에서도 ) 데비안 소스 패키지 파일 의 데비안 패키지 라인 을 통해 제공 됩니다 . 패키징 관리자가 via 에 대한 컴파일 타임 virtualenv 패키지 종속성 을 해결하는 방법 입니다. zlib1g-devProvides: libz-dev debian/controlaptpython-lxmllibz-devzlib1g-dev
TrinitronX

31

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

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

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

sudo apt-get install lib32z1-dev

8

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

리눅스에서 :

sudo apt-get install zlib*

Centos에서 :

sudo yum install zlib*

4

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

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


4

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


4

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

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

실제로 누락 된 것은 lz명령이 아니라 zlib라이브러리 의 개발 파일 이므로 zlib1g-devlib를 설치하려면 ex를 설치해야 합니다.

rhel7과 같은 시스템의 경우 패키지는 zlib-devel


3

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

LD_DEBUG=all make ...

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



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.