"/ Usr / বিন / ld: -lz খুঁজে পাচ্ছেন না"


172

আমি উবুন্টু 10.04 এর অধীনে অ্যান্ড্রয়েড উত্স কোডটি সংকলনের চেষ্টা করছি। এই বলে আমি একটি ত্রুটি পেয়েছি,

/ 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 ইনস্টল করা আমার অতীত হয়ে গেছে। আমার একটি bit৪ বিট সিস্টেম রয়েছে এবং মনে হচ্ছে এটি 32 বিটের লাইব্রেরি চেয়েছিল।


25
এটি কুবুন্টু 12.04 x64 এ libz-dev (zlib1g-dev এর জন্য ভার্চুয়াল প্যাকেজ) এর সাথে এখানে কাজ করেছে।
Qsiris

10
এছাড়াও আমাকে উবুন্টু 14.04 এলটিএস / বিশ্বাসযোগ্য পাইপের মাধ্যমে পাইথনের জন্য lxML-3.4.0 ইনস্টল / বিল্ড করতে সহায়তা করেছে। ধন্যবাদ!
মেরিয়ান

117

X64 ইনস্টলের জন্য zlib1g-dev

sudo apt-get install zlib1g-dev

আমার সমস্ত x86 লিবসের প্রয়োজন নেই;)


9
এটি উবুন্টু 14.04
এমডওয়াকাকসন

2
আমার জন্য একই যেমন এমডেউজ্যাকসন, যদিও আমি মেটাপ্যাকেজের zlib1g-devমাধ্যমে পেয়েছি libz-dev, যেমনটি অন্য উত্তরে প্রস্তাবিত হয়েছিল।
mknaf

1
যদি এটি কাজ না করে তবে স্থির সংস্করণটি ব্যবহার করে দেখুন zlib-static
প্রিয়ভোল্ট

3
Amd64

52

sudo apt-get install libz-dev উবুন্টুতে


2
কেউ কেন এই প্রয়োজনীয়তা সম্পর্কে কিছু আলোকপাত করতে পারে? এই প্যাকেজটি ইনস্টল করার পরে আমি কেবল ভার্চুয়াল পরিবেশে পাইথন-এলএক্সএমএল ইনস্টল করতে সক্ষম হয়েছি। তবে আমি যদি এটি বিশ্বব্যাপী ইনস্টল করার চেষ্টা করি তবে আমার কোনও সমস্যা হবে না। : \
সিবিলেনার

সুনির্দিষ্টভাবে এই কেস সম্পর্কে নিশ্চিত নয়, তবে python-lxmlzlib গ্রন্থাগারে থাকা যুক্তিযুক্তদের প্রয়োজন যা এটি নিজে সরবরাহ করতে পারে না বা সহজভাবে দেয় না। এটি যদি গ্রন্থাগারে পৌঁছতে না পারে তবে এটি অনুপস্থিত বা কিছু অনুমতি বাধা থাকায় এটি নির্মাণ / ফাংশন করতে অক্ষম হবে।
ti7

@ ক্লাবলনার: সংক্ষিপ্ত উত্তর: নির্ভরতা ! python-lxmlযে কোনও প্যাকেজের উপর নির্ভর করে Provides: libz-dev। সি / সি ++ প্রোগ্রামগুলি গ্রন্থাগারগুলির তুলনায় সংকলিত এবং লিঙ্কযুক্ত যা ফাংশন, রুটিন এবং ডেটা স্ট্রাকচার সরবরাহ করে। ইউনিক্স সিস্টেম ব্যবহার .so, .a, .laফাইল ও Windows ব্যবহার .dll। এগুলি ভাগ করা লাইব্রেরি ফাইলগুলিতে সংকলিত হয়, এতে রুটিন থাকে যা অন্যান্য প্রোগ্রামগুলির সাথে লিঙ্ক করতে পারে এবং কিছু কার্যকারিতা বাস্তবায়নের জন্য ব্যবহার করতে পারে। এই উদাহরণের জন্য: ডেটা সংক্ষেপণ এবং ডিকম্প্রেশন ফাংশন libzপ্রয়োগ করে
ত্রিনিট্রনএক্স

@ কেব্লেনার: দীর্ঘ উত্তর / বিবরণ ( অংশ 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ডেবিয়ান প্যাকেজ মাধ্যমে Provides: libz-devলাইন ডেবিয়ান উৎস প্যাকেজের debian/control ফাইল। এই হল কিভাবে aptপ্যাকেজিং ম্যানেজার সমাধান করতে জানে python-lxmlউপর কম্পাইল-টাইম virtualenv প্যাকেজ নির্ভরতা libz-devমাধ্যমে zlib1g-dev
ত্রিনিট্রনএক্স

31

আমি কেবল এই সমস্যার মুখোমুখি হয়েছি এবং "আপনার তৈরি ফাইলগুলি ভেঙে গেছে" এবং "হোস্ট অন্তর্ভুক্ত কখনও কখনও ক্রস সংকলনে অন্তর্ভুক্ত করা উচিত নয়" এর গৃহীত সমাধানের বিপরীতে encountered

অ্যান্ড্রয়েড বিল্ডে অ্যান্ড্রয়েড অ্যাপ্লিকেশন তৈরি করতে SDK দ্বারা ব্যবহৃত অনেক হোস্ট এক্সিকিউটেবলকে অন্তর্ভুক্ত করে। আমার ক্ষেত্রে জিপালাইন তৈরির সময় মেকিং বন্ধ হয়ে যায়, যা একটি অ্যান্ড্রয়েড ডিভাইসে ইনস্টল করার আগে একটি APK কে অনুকূলিতকরণ করতে ব্যবহৃত হয়।

উবুন্টু-এর অধীনে 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.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-devo সুতরাং এটি পাওয়ার জন্য আপনার পূর্ববর্তী লাইব ইনস্টল করা উচিত ।

রেল 7 সিস্টেমের মতো প্যাকেজটি zlib-devel


3

এটি আপনাকে লিঙ্কার কেন ইনস্টলড লাইব্রেরি চায় না সে সম্পর্কে সূত্রগুলি দেখাবে:

LD_DEBUG=all make ...

আমি ভিন্ন প্রসঙ্গে একই সমস্যাটি পেয়েছিলাম: আমার সিস্টেম / লাইব / লিবিজ.সো .1 এর লাইব্যাকের উপর অসন্তুষ্ট নির্ভরতা ছিল কারণ আমি ওএসের ভিন্ন সংস্করণে পুনরায় সংযোগ দেওয়ার চেষ্টা করছিলাম।


1

খোলার জন্য 12.3 (ডার্টমাউথ) (i586) সুডো জিপার ইনস্টল zlib-devel zlib-devel-static


0

অন্যান্য উল্লেখ করেছেন যে lib32z-dev সমস্যা সমাধান করে, তবে সাধারণভাবে প্রয়োজনীয় প্যাকেজগুলি এখানে পাওয়া যাবে:

http://source.android.com/source/initializing.html "প্রয়োজনীয় প্যাকেজ ইনস্টল করা" দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.