Android पर libGL.so लोड करने में विफल


82

मैं Oracle JDK 7 के साथ Ubuntu 12.04 (सटीक पैंगोलिन) का उपयोग कर रहा हूं , और जब मैं ग्रहण से एंड्रॉइड एमुलेटर चला रहा हूं , तो यह त्रुटि दे रहा है:

[2012-07-04 02:52:10 - Emulator] error libGL.so: cannot open shared object file: No such file or directory 
[2012-07-04 02:52:10 - Emulator] Failed to load libGL.so

इसके अलावा एमुलेटर बहुत धीमा है। इस समस्या का समाधान किस प्रकार से किया जा सकता है?

जवाबों:


82

मेरे पास Android SDK ~ / android-sdk-linux_x86 में स्थापित है, इसलिए मैंने किया:

ln -s /usr/lib/libGL.so.1 ~/android-sdk-linux_x86/tools/lib/libGL.so

यह सिर्फ / usr / lib से लिंक करने जैसी त्रुटियों को हल करता है, लेकिन इसके लिए रूट की आवश्यकता नहीं होती है और यह कोर सिस्टम निर्देशिकाओं के साथ गड़बड़ नहीं करता है।


5
यह लिबो के "एप्ट-गेट" कमांड के साथ संयुक्त है जो यहां का सबसे साफ समाधान है।
— डेव कैमरून

यदि आपके पास पहले से ही libGL.so.1 नहीं है, तो आपको लिबो द्वारा समाधान का उपयोग करने की आवश्यकता हो सकती है, लेकिन यह फ़ाइल को लिंक करने के लिए सबसे साफ जगह है। 64 बिट लिबास में 32 बिट लगाने की जरूरत नहीं ...
— अजाक्स

23
locate libGLपहली बार में मदद कर सकते हैं
— युआन

2
मैंने इसका उपयोग किया find / -name 'libGL.so.1'और इसे /usr/lib/x86_64-linux-gnuचालू किया debian jessie।
— जस्टिन स्काइल्स

35

64-बिट Ubuntu 12.04 पर, इसे इस तरह करें:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

स्रोत: आवश्यक पैकेज स्थापित करना (Ubuntu 12.04)


2
इसने मेरे सिस्टम को खराब कर दिया
— एलेक्जेंड्रोस

उत्तर के साथ संयोजन में यह उत्तर - निर्भरता को हल करने के लिए askubuntu.com/a/144194 (निर्भरता का पता लगाने के लिए योग्यता का उपयोग करें और देखें कि समस्या क्या कारण है), और अंत में एक कमांड चल रहा है sudo apt-get install --reinstall gcc-4.7-multilibजैसा कि मैंने उत्तर askubuntu.com/a/236114
— Aleks

मुझे "sudo apt-get install libglapi-mesa" करना था और फिर "sudo apt-get install install libx11-dev: i386 libreadline6-dev: i386 libgl1-mesa-glx: i386" पहला
— stackOverlord

मुझे लगता है कि मुझे x86 के लिए libGL स्थापित नहीं करना पड़ा, यह उपयोग करने के लिए पर्याप्त था ।/sdk/tools/emulator64-x86? ('64' पर ध्यान दें)
— जर्कबेलो

1
अरे यार, किसी भी तरह की समझाइश या चेतावनी के बिना ऐप-किस्त की बड़ी-बड़ी लाइनें पोस्ट करना अच्छा नहीं है।
— सेबस्टियन मच

32

मैं Ubuntu 12.04 64-बिट का उपयोग कर रहा हूं। समस्या को हल करने के लिए निम्न कमांड का उपयोग करना

 sudo ln -s /usr/lib32/fglrx/libGL.so.1.2 /usr/lib/libGL.so

नोट : यह केवल उन लोगों पर लागू होता है जो एएमडी / एटीआई ग्राफिक ड्राइवरों का उपयोग करते हैं।


1
यह मेरे लिए भी काम करता है, मुझे लगता है कि यह केवल एटीआई कार्ड के लिए काम करता है। यह तकनीकी रूप से गलत है क्योंकि यह 32 बिट शेयर्ड लाइब्रेरी को (64 बिट) / लीब / डाइरेक्टरी में सम्‍मिलित करता है, लेकिन ऐसा लगता है कि एंड्रॉइड एमुलेटर केवल इस लिबास के लिए ही दिखेगा।
— एलेक्स प्रेट्ज़लाव

3
मैं libGL.so के लिए फ़ाइल खोज करने और स्थान के आधार पर लिंक कमांड को समायोजित करने की सलाह दूंगा। मेरा हुआ: / usr / lib / i386-linux-gnu / mesa
— बाइटबेंडर

2
मेरा / /rr/lib/x86_64-linux-gnu/mesa/libGL.so पर था, लेकिन अगर मैंने इसे चलाने की कोशिश की तो त्रुटि हो गई क्योंकि यह 32-बिट लिबास चाहता था और मैंने 64-बिट लिब की आपूर्ति की
— बेन मैक्कन

32

32-बिट Ubuntu 12.04 LTS के लिए, इसने काम किया:

sudo apt-get install libgl1-mesa-dev

निम्नलिखित में से कोई भी काम नहीं किया:

cd /usr/lib/i386-linux-gnu/mesa/
sudo ln -s libGL.so.1.2 libGL.so 
sudo ln -s libGL.so.1.2 /usr/lib/libGL.so
ln -s libGL.so.1.2 ~/android/android-sdk-linux/tools/lib/libGL.so

1
वही 12.10 के लिए चला जाता है
— logcat 16

लिनक्स टकसाल के लिए यहां भी
— '12

13.04 के साथ काम करता है। ध्यान दें कि यदि आप टूल / लीबी डायरेक्टरी में सिमिलिंक लगाते हैं तो आपको उसे फिर से निकालना होगा।
— पर्स

2
एप्ट-गेट कमांड ने उबंटू 13.04 x64 पर भी काम किया, जिसे सिमलिंक की कोई आवश्यकता नहीं है।
— जेसन मैकविटा

14

मेरे लिए क्या काम करता है (ubuntu 12.04 64bit) बस चलाना था:

    sudo apt-get install libgl1-mesa-dev

मैंने पाया कि libGL.soनिर्देशिका में मौजूद है/usr/lib/x86_64-linux-gnu/

32 बिट संस्करण की स्थापना काम नहीं कर रही थी।


6

64 बिट Ubuntu 12.04 पर, कोई / usr / lib64 नहीं है। यह केवल / usr / lib है। इसके अलावा, मेरी मशीन पर, libGL.so मौजूद नहीं है। इसके बजाय फ़ाइल libGLEW.so है

/Usr/lib/LibGL.so स्थापित करने के लिए आप चला सकते हैं: sudo apt-get install libgl1-mesa-dev

हालाँकि, यह मेरे लिए समस्या का समाधान नहीं था। वास्तव में, इसने मेरे सिस्टम को खराब कर दिया।


Synaptic के साथ जांच की गई, libgl1-mesa-dev इंस्टॉल libGL.so से /usr/lib/x86_64-linux-gnu/libGL.so
— sergio91pt

1
GLEW एक अलग लाइब्रेरी है, OpenGL एक्सटेंशन रैंगलर । यह "बजाय" नहीं है, यह ऐसा कुछ है जिसे प्रोग्राम libGL के अलावा उपयोग कर सकते हैं ।
— वायजार्ड

4

यह मेरे लिए 64 बिट Ubuntu 12.10 और ADT बंडल पर काम करता है:

ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 ~/adt-bundle-linux-x86_64/sdk/tools/lib/libGL.so

यदि आपके पास /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1बस स्थापित नहीं हैlibgl1-mesa-glx

sudo apt-get install libgl1-mesa-glx

4

मुझे लगता है कि मुझे यह सही है, कोई चेतावनी नहीं और कोई सुस्ती नहीं ... यह मालिकाना ड्राइवरों के साथ काम नहीं कर सकता है, हालांकि।

सुनिश्चित करें कि libgl1-mesa-glx: i386 स्थापित है (भले ही आपको x64 SO फ़ाइल मिली हो)। फिर करो:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so

3

एनवीडिया ऑप्टिमस:

दोहरे ग्राफिक्स (इंटेल और एनवीडिया) पर चल रहा है, मैंने निम्नलिखित का उपयोग किया है:

  1. भौंरा स्थापित करें (देखें: https://wiki.ubuntu.com/Bumblebee#Installation )
  2. आवश्यक परिवाद स्थापित करें।
  3. एनवीडिया असतत कार्ड पर एमुलेटर चलाएं।

यह काम कर जाना चाहिए:

sudo add-apt-repository ppa:bumblebee/stable
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update 
sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic 
sudo apt-get install ia32-libs

जब भी आप एमुलेटर चलाना चाहते हैं, बस ऑप्टिरुन का उपयोग करें:

optirun emulator @<avd_name>

मुझे एक चेतावनी देनी चाहिए कि मैंने कल ही लिनक्स स्थापित किया था। इसलिए मैं वास्तव में नहीं जानता कि मैं क्या कर रहा हूं ...


3

Http://developer.android.com/sdk/installing/index.html का जिक्र करते हुए , मैंने ia32-lib स्थापित किया और किया:

ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/i386-linux-gnu/mesa/libGL.so

यही सब मैंने इस समस्या को हल करने के लिए किया।


अच्छा लगा, लेकिन मुझे /usr/lib/x86_64-linux-gnu/mesaइसके बजाय इस्तेमाल करना था
— Joril


2

उबंटू 12.04 64-बिट, गनोम 3.4 पर, मैंने पहली बार http://developer.android.com/sdk/installing/index.html पर कॉल किया और ia32-lib स्थापित किया, जो / usr / lib / i386-linux-gnu उत्पन्न करेगा /mesa/libGL.so.1.2.0

फिर मैं नीचे कमांड चलाता हूं और इस समस्या को हल करता हूं:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so

यह ग्रिडस्टेशन के उत्तर से थोड़ा अलग है।

मुझे लगता है कि स्थानीय रूप से मेसा ड्राइवर को स्थापित करने की कोई आवश्यकता नहीं है, जो आपके वास्तविक वीडियो ड्राइवरों के साथ समस्या पैदा कर सकता है।


2

उबंटू में 64 बिट पर,

1. जाँच करें libGL,

$ locate libGL.so
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0

2. एसडीके जहां स्थापित है, वहां एक सिमलिंक बनाएं

ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/local/android-studio/sdk/tools/lib/libGL.so

मैं पुष्टि कर सकता हूं कि यह Ubuntu 64 बिट के तहत समस्या को हल करता है।
— यर्मो लैमर्स

2

इसे उबंटू 12.10 (क्वांटल क्विटज़ल) 64-बिट पर काम करने के लिए , आपको दो काम करने होंगे:

1) आपको LD_LIBRARY_PATH का

उदाहरण देना होगा:

export LD_LIBRARY_PATH=~/tests/android/adt-bundle-linux-x86_64/sdk/tools/lib

टिप्पणियाँ: अपने स्थान पर पथ बदलें

2) आपको एक प्रतीकात्मक लिंक बनाना होगा

क) locate libGLसही पुस्तकालय खोजने के लिए उपयोग करें :

rudy@vsolutions:~$ locate libGL
/home/rudy/opt/android/android-sdk-linux/tools/lib/libGLES_CM_translator.so
/home/rudy/opt/android/android-sdk-linux/tools/lib/libGLES_V2_translator.so
/usr/lib/i386-linux-gnu/libGLU.so.1
/usr/lib/i386-linux-gnu/libGLU.so.1.3.1
...
/usr/lib32/nvidia-current/libGL.so.304.43

b) सॉफ्ट लिंक बनाएं

sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so

टिप्पणियाँ: 64-बिट ऑपरेटिंग सिस्टम पर 64-बिट लाइब्रेरी का उपयोग करें!

अब एमुलेटर चालू करें मेरा सिस्टम ऑप्टिमस है , और मैंने भौंरा स्थापित किया है । मैं "Intel Open Source Technology Center" "Mesa DRI Intel (R) Ironlake Mobile" "2.1 Mesa 9.0" या "NVIDIA Corporation" "GeForce GT 330M / PCIe / SSE2" "3.3.0 NVIDIA 304.43" का उपयोग कर सकता हूं।

ए) इंटेल

/home/rudy/tests/android/adt-bundle-linux-x86_64/sdk//tools/emulator64-arm -avd avd_42 -scale 0.46 -gpu on -verbose

बी) एनवीडिया

optirun /home/rudy/tests/android/adt-bundle-linux-x86_64/sdk//tools/emulator64-arm -avd avd_42 -scale 0.46 -gpu on -verbose

टिप्पणियाँ:

  • मुझे इंटेल और एनवीडिया कार्ड के बीच कोई अंतर नहीं दिखाई दिया ... यह निश्चित रूप से है क्योंकि एमुलेटर जीपीयू गहन नहीं है ।
  • मेरे सिस्टम पर एक Intel Core i5, एमुलेटर को शुरू करने में लगभग 1 मिनट का समय लगा ... कृपया धैर्य रखें ... मुझे एमुलेटर लोड होने के बाद तेजी से लगता है (प्रतीक्षा करने के लिए 1 मिनट)। यदि आप ग्रहण आईडीई से एमुलेटर शुरू करते हैं , तो एमुलेटर एक सॉफ्टवेयर इम्यूलेशन (जीपीयू बंद है) करता है और शुरू करने के लिए 1 मिनट 30 मिनट का समय लगता है ... यह इंटेल या एनवीडिया कार्ड का उपयोग करने की तुलना में बहुत अधिक धीमा है !!!
  • verbose अधिक डायग्नोस्टिक्स प्रदर्शित करने के लिए उपयोग करने के लिए पैरामीटर है
  • optirunभौंरा पर एनवीडिया का उपयोग करने का आदेश है। यदि आपके पास भौंरा नहीं है तो इसका उपयोग न करें!
  • avd एक आभासी उपकरण है
  • gpu on ग्राफिकल कार्ड का उपयोग करने के लिए

1

OSError: libGL.so: साझा ऑब्जेक्ट फ़ाइल को नहीं खोल सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं

जब आप पहली बार VNL लॉन्च करने का प्रयास करते हैं तो यह लिनक्स सिस्टम पर दिखाई दे सकता है। इसे हल करने के लिए, (व्यवस्थापक के रूप में) एक नया लिंक बनाएं /usr/lib:

sudo ln -s /usr/lib/libGL.so.1.2 /usr/lib/libGL.so

यदि आपके पास 64-बिट लिनक्स है, तो उपयोग करें /usr/lib64 instead।

पहले जांचें कि आपके पास वास्तव libGL.so.1.2में है /usr/libया /usr/lib64; यह libGL.so.1वीडियो ड्राइवरों के आधार पर, इसके बजाय, या किसी अन्य निर्देशिका में कुछ और कहा जा सकता है ।

आप libGLलिंक करने के लिए सही फ़ाइल खोजने के लिए खोज का उपयोग कर सकते हैं ।


1

मेरी भी यही समस्या थी। लेकिन मेरे मामले में, मैंने इसे दूसरे (मुझे लगता है, बेहतर) तरीके से हल किया।

मेरी स्थिति में (लुबंटू 13.10), सिंटैप्टिक libgl1-mesa-devपैकेज मैनेजर के माध्यम से पुस्तकालय को बस स्थापित करने के लिए पर्याप्त था ( libgl1-mesa-driल्यूबुन्टू डिस्ट्रो की स्थापना के समय पुस्तकालय डिफ़ॉल्ट रूप से पहले से ही स्थापित था)।

यह एक फाइल से दूसरे में लिंक डालने के सभी झंझटों को हल करता है और आपके सिस्टम को प्रदूषित होने से भी बचाता है:

  • आप कई महीनों (या वर्षों) के बाद कैसे जान पाएंगे कि आपने सिस्टम को चालू रखने के लिए क्या समर्पित लिंक लगाए हैं?
  • भविष्य के अपडेट के बारे में क्या है, अगर आप उन चीजों को खुद करना शुरू करते हैं? क्या "मैनुअल हस्तक्षेप" के कारण कुछ टूट जाएगा / अपडेट नहीं होगा?

यदि आप "सिस्टम मैकेनिज्म" का उपयोग करते हैं, तो यह सब आपके लिए किया जाता है। और सही ढंग से किया। इसलिए वे उपकरण पहले स्थान पर हैं।

सर्वश्रेष्ठ आरजीडी,


अभी-अभी देखा कि @Tanyasipeti ने apt-get के माध्यम से ऐसा ही किया। लेकिन मेरे मामले में, इसने इस मुद्दे को पूरी तरह से हल कर दिया। मैं एमुलेटर ऊपर और चल रहा है।
— GeertVc

मैंने केवल 13.10 के लिए खुद को समझा और उत्तर के रूप में कुछ इसी तरह जोड़ना चाहता था!
— वीर

1

उपयोगकर्ता 1289608 के समान, मैं मेसा की एक मौजूदा संस्थापन से एक लिंक करने में सक्षम था:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so

0

मैं Ubuntu 12.04 64-बिट का उपयोग कर रहा हूं। समस्या को हल करने के /usr/lib64/libGLC.so.0लिए /usr/lib64/libGL.soलगता है जोड़ना ।

संपादित करें: यह त्रुटि संदेशों को रोकता है, लेकिन एमुलेटर अभी भी मेरे लिए धीमा है।


हाँ, एमुलेटर मेरे लिए भी अविश्वसनीय रूप से धीमा है।
— इगोरगानापोलस्की

0

यह मेरे लिए काम किया:

DDMS से adb को रीस्टार्ट करें:
ग्रहण में: विंडो> ओपन पर्सपेक्टिव ...> अदर> DDMS। बाईं ओर के फलक से एमुलेटर चुनें और "रिस्टार्ट अदब" चुनें

आप टर्मिनल विंडो से adb सर्वर को रिस्टार्ट भी कर सकते हैं।

android-sdk-linux/platform-tools/adb kill-server
android-sdk-linux/platform-tools/adb start-server

0

मुझे कमांड "पता" द्वारा libGL के लिए फ़ोल्डर मिला

यह निकला / usr / lib / i386-linux-gnu /

~ $ का पता लगाने libGL
/usr/lib/i386-linux-gnu/libGLEW.so.1.8
/usr/lib/i386-linux-gnu/libGLEW.so.1.8.0
/ usr / lib / i386-linux-जीएनयू / libGLEWmx .so.1.8
/usr/lib/i386-linux-gnu/libGLEWmx.so.1.8.0
/usr/lib/i386-linux-gnu/libGLU.so.1
/ usr / lib / i386-linux-gnu / libGLU .so.1.3.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0


0

मेरे डेबियन 7 'व्हीज़ी' इंस्टॉलेशन के लिए मैंने निम्नलिखित कमांड का उपयोग किया:

ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 opt/android/tools/lib/libGL.so

0
sudo apt-get install libgl1-mesa-dev
cd ~/Development/adt-bundle-linux-x86_64-20140321/sdk/tools/lib
unlink libGL.so 
ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 libGL.so

बस!


0

मुझे यह समस्या थी क्योंकि मैंने अपना AVD बनाते समय "Use Host GPU" की जाँच की थी। मैंने इसे अनियंत्रित विकल्प के साथ आज़माया और मैं एमुलेटर को सफलतापूर्वक शुरू करने में सक्षम था। यह मेरे परीक्षण उद्देश्यों के लिए स्वीकार्य है, लेकिन यदि होस्ट जीपीयू का उपयोग करना महत्वपूर्ण है, तो आप शायद यहां कुछ अन्य समाधानों की कोशिश करना चाहते हैं।



-1

मैंने 64- और 32-बिट लाइब्रेरियों, libgl1 को पुन: स्थापित करके इस समस्या को हल किया:

$ sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-glx:i386

बैकग्राउंड: पहले मैंने फ्री रैडॉन ड्राइवर से वापस फ्रॉग्रैक्स में स्विच किया। मुझे लगता है कि यह किसी तरह मेरे lib1 को खराब कर देता है, क्योंकि fglrx अपने स्वयं के संस्करण के साथ आता है।

इसके अलावा, मुझे लगता है कि यहां प्रदान किए गए अन्य समाधान संभवतः खतरनाक हैं, क्योंकि 32 बिट साझा पुस्तकालयों को (64 बिट) / परिवाद / निर्देशिका में सम्‍मिलित करना गलत है।


-2

जांचें कि क्या आपके पास libgl1-mesa-*पैकेज स्थापित हैं। यदि ऐसा है, तो libgl1-mesa-devअसंबद्ध साझा किए गए ऑब्जेक्ट को प्राप्त करने के लिए पैकेज स्थापित करें ।

आपको ऐसा नहीं करना चाहिए - यह Android टीम की त्रुटि है। उन्हें एक विराम दें, वे केवल जावा डेवलपर्स हैं।


मेरे पास पहले से ही मेरे सिस्टम में mesa-libGL-dev है, लेकिन फिर भी त्रुटि है
— php.khan

इसने मेरे लिए Ubuntu 11.10 32-बिट पर काम किया। मैंने libgl1-mesa-dev स्थापित किया है और एमुलेटर शुरू करते समय कोई त्रुटि संदेश नहीं था। मुझे किसी भी लिंकिंग को करने की आवश्यकता नहीं थी, लेकिन शायद 64-बिट पर इसकी आवश्यकता होगी?
— कैथरीन रिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.