"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

और मेरा जीसीसी संस्करण उत्पादन:

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
यह कुबंता 12.04 x64 पर लिबास-देव (zlib1g-dev के लिए आभासी पैकेज) के साथ यहां काम करता था।
कासिरिस

10
इसके अलावा मुझे उबंटू 14.04 एलटीएस / ट्रस्टी पर पाइप के माध्यम से अजगर के लिए lxml-3.4.0 स्थापित / बनाने में मदद की। धन्यवाद!
मैरियन

117

X64 के लिए स्थापित करें zlib1g-dev

sudo apt-get install zlib1g-dev

मुझे सभी x86 लिब की जरूरत नहीं है;)


9
पुष्टि कर सकते हैं यह ubuntu 14.04 पर पाइप के माध्यम से
lxml

2
mwjackson के लिए मेरे लिए भी यही है, हालाँकि मैं zlib1g-devरूपक के माध्यम से मिला libz-dev, जैसा कि एक अन्य उत्तर में सुझाया गया था।
mknaf

1
यदि यह काम नहीं करता है, तो स्थिर संस्करण का प्रयास करें zlib-static
प्रियवोल्ट

3
Amd64

52

sudo apt-get install libz-dev ubuntu में।


2
क्या कोई इस बारे में कुछ प्रकाश डाल सकता है कि यह क्यों आवश्यक है? मैं इस पैकेज को स्थापित करने के बाद ही एक आभासी वातावरण में अजगर-एलएक्सएमएल स्थापित करने में सक्षम था। हालाँकि अगर मैंने इसे विश्व स्तर पर स्थापित करने की कोशिश की, तो मुझे कोई समस्या नहीं होगी। : \
cballenar

विशेष रूप से उस मामले के बारे में निश्चित नहीं है, लेकिन मोटे तौर पर python-lxmlzlib पुस्तकालय में निहित तर्क की आवश्यकता होती है जो यह या बस खुद को प्रदान नहीं कर सकता है। यदि यह लाइब्रेरी तक नहीं पहुंच सकता है, तो या तो यह गायब है या कुछ अनुमतियाँ अवरोध हैं, यह निर्माण / कार्य करने में असमर्थ होगा।
ti7

@cballenar: संक्षिप्त उत्तर: निर्भरताएँ ! python-lxmlकि किसी भी पैकेज पर निर्भर करता है Provides: libz-dev। C / C ++ प्रोग्राम लाइब्रेरियों के विरुद्ध संकलित और जुड़े हुए हैं जो कार्य, दिनचर्या और डेटा संरचना प्रदान करते हैं। यूनिक्स प्रणालियों का उपयोग .so, .a, .laफ़ाइलें और Windows उपयोग .dll। ये साझा लाइब्रेरी फ़ाइलों को संकलित करते हैं, जिसमें रूटीन होते हैं जो अन्य प्रोग्रामों के खिलाफ लिंक कर सकते हैं और कुछ कार्यक्षमता को लागू करने के लिए उपयोग कर सकते हैं। इस उदाहरण के लिए: डेटा संपीड़न और विघटन कार्यों को libzलागू करता है।
ट्रिनिट्रोनएक्स

@cballenar: लंबे उत्तर / विवरण ( भाग 1 ): उबंटू पर libz-devएक आभासी पैकेज है (इसे अपने सिस्टम पर देखें:) apt show libz-dev। अन्य पैकेज zlib1g-devप्रदान करता है libz-dev, जिसमें साझा लाइब्रेरी फ़ाइल /usr/lib/x86_64-linux-gnu/libz.aऔर सी हैडर फ़ाइलें /usr/include/zconf.h और शामिल हैं /usr/include/zlib.h। आप पैकेज सामग्री को इसके साथ देख सकते हैं: dpkg -L zlib1g-devजिसमें वह सभी फाइलें हैं जो इसमें शामिल हैं।
ट्रिनिट्रॉनएक्स

@cballenar: लंबा उत्तर ( भाग 2 ): जैसा कि उल्लेख किया गया है, libz-dev( भी डेबियन में ) डेबियन स्रोत पैकेज की फाइल में डेबियन पैकेज लाइन के माध्यम से प्रदान किया zlib1g-devजाता है । यह कैसे है पैकेजिंग प्रबंधक को हल करने जानता है पर संकलन समय virtualenv पैकेज निर्भरता के माध्यम से । Provides: libz-dev debian/controlaptpython-lxmllibz-devzlib1g-dev
ट्रिनिट्रोनएक्स

31

मुझे बस इस समस्या का सामना करना पड़ा और "आपकी फ़ाइलें टूट गई हैं" के स्वीकृत समाधान के विपरीत और "मेजबान में कभी भी एक क्रॉस कंपाइल में शामिल नहीं होना चाहिए"

एंड्रॉइड ऐप में एंड्रॉइड ऐप बनाने के लिए एसडीके द्वारा उपयोग किए जाने वाले कई होस्ट निष्पादन शामिल हैं। मेरे मामले में zipalign का निर्माण करते समय मेक बंद हो गया, जिसका उपयोग एंड्रॉइड डिवाइस पर इंस्टॉल करने से पहले एपीके को अनुकूलित करने के लिए किया जाता है।

Lib32z1-dev को स्थापित करने से मेरी समस्या हल हो गई, उबंटू के तहत आप इसे निम्न कमांड के साथ स्थापित कर सकते हैं:

sudo apt-get install lib32z1-dev

8

मेरे पास एक ही त्रुटि थी, स्थापित करने वाली zlib-devel ने मेरी समस्या को हल किया, कमांड टाइप करें और zlib पैकेज स्थापित करें।

लिनक्स पर:

sudo apt-get install zlib*

सेंटोस पर:

sudo yum install zlib*

4

इसका मतलब है कि आपने लाइब्रेरी को 'libz.a' या 'libz.so' शामिल करने के लिए कहा, जिसमें कंप्रेशन पैकेज था, और हालांकि कंपाइलर को कुछ फाइलें मिलीं, उनमें से कोई भी आपके द्वारा उपयोग किए जा रहे निर्माण के लिए उपयुक्त नहीं था।

आपको या तो अपने बिल्ड पैरामीटर को बदलने की आवश्यकता है या आपको सही लाइब्रेरी स्थापित करने की आवश्यकता है या आपको यह निर्दिष्ट करने की आवश्यकता है कि सही लाइब्रेरी एक -L/where/it/is/libप्रकार के विकल्प के साथ लिंक कमांड लाइन पर कहां है ।


4

एक अन्य संभावित कारण: आपने लिंकर को पार कर लिया है - लेकिन आपके पास केवल libz (libz.so) का एक गतिशील संस्करण है, लेकिन ऐसा संस्करण नहीं है जो सांख्यिकीय रूप से जुड़ा हो सकता है (libz.a)।


4

उन तीन समाधानों में से एक का प्रयास करें। यह काम करना होगा :):

  1. sudo apt-get install zlib1g-dev
  2. sudo apt-get install लिबास-देव
  3. sudo apt-get install lib32z1-dev

वास्तव में जो याद आ रहा है वह lzकमांड नहीं है , लेकिन zlibलाइब्रेरी के लिए विकास फाइलें हैं। यदि आपको zlib1g-devइसे प्राप्त करने के लिए पूर्व के लिए lib स्थापित करना चाहिए ।

Rhel7 जैसे सिस्टम के लिए पैकेज है zlib-devel


3

यह आपको इस बारे में संकेत देगा कि लिंकर स्थापित पुस्तकालय क्यों नहीं चाहता है:

LD_DEBUG=all make ...

मुझे एक अलग संदर्भ में एक ही समस्या थी: मेरे सिस्टम /lib/libz.so.1 में लिबास पर असंतुष्ट निर्भरता थी क्योंकि मैं ओएस के एक अलग संस्करण पर राहत देने की कोशिश कर रहा था।


1

उद्घाटन के लिए 12.3 (डार्टमाउथ) (i586) sudo zypper स्थापित zlib-devel zlib-devel-static


0

दूसरों ने उल्लेख किया है कि lib32z-dev समस्या को हल करता है, लेकिन सामान्य तौर पर आवश्यक पैकेज यहां मिल सकते हैं:

http://source.android.com/source/initializing.html "आवश्यक पैकेज इंस्टॉल करना" देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.