উবুন্টুতে 64-বিটে 32-বিট অ্যাপটি কীভাবে চালানো যায়?


132

আমি উবুন্টু 14.04 এবং বর্তমান অ্যান্ড্রয়েড বিকাশ এসডিকে ইনস্টল করেছি, যার মধ্যে 32-বিট এক্সিকিউটেবল রয়েছে। আমি দেখেছি যে আমি সেই 32-বিট বাইনারিগুলি চালাতে পারি না। এগুলি বাশ থেকে শুরু করার চেষ্টা আমাকে ত্রুটি দেয়:

$ ./adb
bash: ./adb: No such file or directory

এটি যদিও সেখানে রয়েছে:

$ ls -al ./adb
-rwxrwxrwx 1 thomas thomas 1231255 Jan 17 13:31 ./adb
$ file ./adb
./adb: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped. Same symptom for all the other 32-bit tools in the Android SDK. 

পুরানো দিনগুলিতে কেউ 32-বিট সমর্থন পেতে 32-বিট উবুন্টুতে 32-বিট লাইব্রেরি ইনস্টল করতে পারে তবে এটি আর কাজ করবে বলে মনে হয় না।

আমি কীভাবে একটি 64-বিট উবুন্টু 14.04 এ 32-বিট অ্যাপ্লিকেশন চালাব?


উত্তর:


186

64-বিট বহু-স্থাপত্য উবুন্টু সিস্টেমে একটি 32 বিট এক্সিকিউটেবল ফাইল চালাতে, যোগ আছে i386আর্কিটেকচার এবং তিন গ্রন্থাগার প্যাকেজগুলি ইনস্টল libc6:i386, libncurses5:i386এবং libstdc++6:i386:

sudo dpkg --add-architecture i386

বা আপনি যদি উবুন্টু 12.04 এলটিএস (যথাযথ পাঙ্গোলিন) বা নীচে ব্যবহার করছেন তবে এটি ব্যবহার করুন:

echo "foreign-architecture i386" > /etc/dpkg/dpkg.cfg.d/multiarch

তারপর:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

যদি ব্যর্থ হয়, এছাড়াও

sudo apt-get install multiarch-support

এই পদক্ষেপগুলির পরে, আপনার 32-বিট অ্যাপ্লিকেশনটি চালানো উচিত:

./example32bitprogram

@ অবিনাশরাজ এটি আমাকে সাহায্য করেছে! যাইহোক, "সুডো।
মার্সেল

1
এটি চলতি ডিরেক্টরিতে উপস্থিত 32bit adb বাইনারি ফাইল কার্যকর করে।
অবিনাশ রাজ

1
উবুন্টু ১৪.০৪-এ কাজ করার জন্য, আমাকেও ইনস্টল করতে হয়েছিল lib32z1, তবে লক্ষ্য করে এটি libc6-i386 এ টানা হয়েছে (পার্থক্যটি, হাইফেনটি লক্ষ্য করুন, কোলন নয়)।
ক্রিস বেটি

আমি তোমার পদক্ষেপ করেছিল libc6:i386, libncurses5:i386, libstdc++6:i386সবচেয়ে নতুন সংস্করণটির এবং ম্যানুয়ালি ইনস্টল সেট করা আছে। তবে এর পরে এটি বলে: " Soma packages could not be installed.This may mean you have requested impossible situation or you are using unstable distribution ..." এবং আনমেট নির্ভরতা: libstdc++6-4.4-dev:i386নির্ভর করে g++-4.4:i386(ইনস্টল হবে না)। দ্বন্দ্ব: libstdc++6-4.4-dbg:i386... এবং অন্যান্য বিবাদগুলি libstdc++6-4.4/6/7ইত্যাদি What কোনটি ভুল বা আমার এখনকার মতো তা ছেড়ে দেওয়া উচিত?
ফ্রেড্রিক গাউস

@ ফ্রেড্রিকগস এখানে প্রবেশ করুন
অবিনাশ রাজ

9

আপনার বাইনারি থাকাকালীন "এ জাতীয় কোনও ফাইল বা ডিরেক্টরি" উপস্থিত হতে পারে না তবে এতে কিছু লাইব্রেরি নেই। আপনি যদি build-essentialপ্যাকেজ ইনস্টল করেন , আপনার কাছে lddকমান্ড উপলব্ধ থাকবে। এই কমান্ডটি ldd ./adb | grep notআপনাকে দেখাবে যে কোন লাইব্রেরি অনুপস্থিত রয়েছে। এই লাইব্রেরিগুলি কেবল অ্যাপ্লিকেশন সহ i386 খিলানে ইনস্টল করুন। এটি পছন্দ করুন: apt-get install libmissing:i386 সাবধান, কিছু বাগি প্যাকেজগুলি 64 বিট সংস্করণ ফার্সকে মুছতে চেষ্টা করবে।


আপনাকে ধন্যবাদ, এটি একটি অদ্ভুত ত্রুটির বার্তাটি ব্যাখ্যা করবে। আমি প্রথমে বিভ্রান্ত হয়েছিলাম কেন বাশ আমাকে এই ত্রুটিটি দেবে (শিশু প্রক্রিয়া থেকে গ্রন্থাগারগুলি মিস করে এমন কিছু ত্রুটির পরিবর্তে) তবে এখন আমি অনুমান করি যে বাশ কেবল এক্সিকিউটিভ (3) এ एनওএনটি ফিরে দেখবে এবং এটি প্রিন্ট করে।
টমাস স্টুয়েফ

5

এবং যদি আপনি "adb" ব্যবহার করতে চান তবে এর জন্য একটি প্যাকেজ রয়েছে:

sudo apt-get install android-tools-adb

এবং প্রায় 32-বিট লাইব্রেরি - কেবলমাত্র:

sudo apt-add-architecture i386

যথেষ্ট হবে।


টিপটির জন্য ধন্যবাদ, তবে আমি উবুন্টু রেপোগুলিতে নয়, গুগল থেকে ডাউনলোড করা অ্যান্ড্রয়েড সরঞ্জামগুলি ব্যবহার করতে চেয়েছিলাম। আমি সেই প্যাকেজটির সম্পূর্ণতা সম্পর্কেও নিশ্চিত নই।
টমাস স্টুয়েফ

উবুন্টু সংগ্রহস্থলের অবশ্যই নতুন সংস্করণ থাকতে হবে। প্যাকেজটিতে কেবল অ্যাডবি রয়েছে। আপনি যদি ফাস্টবুট চান - এটির জন্যও প্যাকেজ রয়েছে :)
আস্তেফানভ

3

জানা এবং অবিনাশ রাজের দুর্দান্ত উত্তরের সাথে সাথে আমাকে জিসিসি-মাল্টিলিবও ইনস্টল করতে হয়েছিল:

sudo apt-get install gcc-multilib

সম্ভবত এটি কারণ আমি .৪ বিট এ একটি পুরানো জিসিসি সংস্করণ চালাতে চেয়েছিলাম।

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