Android'de libGL.so yüklenemedi


82

Oracle JDK 7 ile Ubuntu 12.04 (Hassas Pangolin) kullanıyorum ve Android öykünücüsünü Eclipse'den çalıştırdığımda şu hatayı veriyor:

[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

Ayrıca emülatör çok yavaştır. Bu sorunu nasıl çözebilirim?

Yanıtlar:


82

Android SDK'yı ~ / android-sdk-linux_x86'ya yükledim, bu yüzden yaptım:

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

Bu, / usr / lib bağlantısının yaptığı gibi hataları çözer, ancak kök gerektirmez ve çekirdek sistem dizinleriyle uğraşmaz.


5
Bu, libo'nun "apt-get" komutuyla birleştiğinde buradaki en temiz çözümdür.
Dave Cameron

Halihazırda libGL.so.1'e sahip değilseniz, çözümü libo tarafından kullanmanız gerekebilir, ancak burası dosyayı bağlamak için en temiz yerdir. 64 bit kitaplara 32 bit koymanıza gerek yok ....
Ajax

23
locate libGLilk başta yardımcı olabilir
yuan

2
Kullandım find / -name 'libGL.so.1've /usr/lib/x86_64-linux-gnuüzerinde buldum debian jessie.
Justin Skiles

35

64 bit Ubuntu 12.04'te şu şekilde yapın:

$ 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

Kaynak: Gerekli paketleri yükleme (Ubuntu 12.04)


2
bu sistemimi mahvetti
Alexandros

Bu cevap, cevapla birlikte - bağımlılıkları çözmek için askubuntu.com/a/144194 (bağımlılığı bulmak ve soruna neyin neden olduğunu görmek için yetenek kullanın) ve sonunda cevaptasudo apt-get install --reinstall gcc-4.7-multilib bulduğum gibi bir komut çalıştırma askubuntu.com/a/236114
Aleks

"Sudo apt-get install libglapi-mesa" ve ardından "sudo apt-get install libx11-dev: i386 libreadline6-dev: i386 libgl1-mesa-glx: i386" ilk
stackOverlord

X86 için libGL kurmam gerekmediğini düşünüyorum, ./sdk/tools/emulator64-x86 kullanmak yeterliydi? ('64'e dikkat edin)
jcarballo

1
Ah adamım, herhangi bir açıklama veya uyarı olmadan çok sayıda uygulama taksidi yayınlamak iyi değil.
Sebastian Mach

32

Ubuntu 12.04 64-bit kullanıyorum. Sorunu çözmek için aşağıdaki komutu kullanmak

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

Not : Bu, yalnızca AMD / ATI grafik sürücülerini kullananlar için geçerlidir.


1
Bu benim için de çalıştı, bence bu sadece ATI kartları için çalışıyor. Bu teknik olarak yanlıştır çünkü 32 bit paylaşımlı kitaplığı (64 bit) / lib / dizinine sembolik bağlar, ancak Android öykünücüsü yalnızca bu kitaplığı arayacak gibi görünüyor.
Alex Pretzlav

3
LibGL.so için bir dosya araması yapmanızı ve konuma bağlı olarak bağlantı komutunu ayarlamanızı tavsiye ederim. Benimki: / usr / lib / i386-linux-gnu / mesa
bytebender

2
Benimki /usr/lib/x86_64-linux-gnu/mesa/libGL.so adresindeydi, ancak çalıştırmayı denediğimde bir hataya neden oldu çünkü 32 bitlik bir kitaplık istiyordu ve 64 bitlik bir kitaplık sağladım
Ben McCann

32

32 bit Ubuntu 12.04 LTS için bu işe yaradı:

sudo apt-get install libgl1-mesa-dev

Aşağıdakilerden hiçbiri işe yaramadı:

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

13.04 ile çalışır. Tools / lib dizinine bir sembolik bağ koyarsanız, onu yeniden kaldırmanız gerektiğini unutmayın.
Perseids

2
Apt-get komutu Ubuntu 13.04 x64'te de çalıştı, symlink'e gerek yok.
Jason McVetta

14

Benim için işe yarayan şey (ubuntu 12.04 64bit) sadece çalıştırmaktı:

    sudo apt-get install libgl1-mesa-dev

libGL.soDizinde var olduğunu buldum/usr/lib/x86_64-linux-gnu/

32 bit sürümün kurulumu çalışmıyordu.


6

64 bit Ubuntu 12.04'te / usr / lib64 yoktur. Yalnızca / usr / lib'dir. Ayrıca, makinemde libGL.so mevcut değil. Bunun yerine dosya libGLEW.so'dur.

/Usr/lib/LibGL.so yüklemek için şunu çalıştırabilirsiniz: sudo apt-get install libgl1-mesa-dev

Ancak benim için sorunu çözmedi. Aslında, muhtemelen sistemimi alt üst etti.


/Usr/lib/x86_64-linux-gnu/libGL.so için Synaptic, libgl1-mesa-dev yüklemeler libGL.so ile İşaretli
sergio91pt

1
GLEW farklı bir kitaplıktır, OpenGL Extension Wrangler . "Onun yerine" değil, programların libGL'ye ek olarak kullanabileceği bir şey .
Wyzard

4

Bu benim için 64 bit Ubuntu 12.10 ve ADT paketinde çalıştı:

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

Eğer var yoksa /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1sadece kurlibgl1-mesa-glx

sudo apt-get install libgl1-mesa-glx

4

Sanırım doğru anladım, uyarı yok ve yavaşlık yok ... Yine de bu, tescilli sürücülerle çalışmayabilir.

Libgl1-mesa-glx: i386'nın kurulu olduğundan emin olun (bir x64 SO dosyanız olsa bile). O zaman yap:

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

3

NVidia Optimus:

İkili grafiklerde (intel ve nvidia) çalışırken aşağıdakileri kullandım:

  1. Bumblebee'yi yükleyin (bkz: https://wiki.ubuntu.com/Bumblebee#Installation )
  2. Gerekli kütüphaneyi kurun.
  3. Emülatörü nvidia ayrık kartında çalıştırın.

Bu hile yapmalı:

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

Öykünücüyü çalıştırmak istediğinizde, sadece optirun kullanın:

optirun emulator @<avd_name>

Linux'u sadece dün kurduğuma dair bir uyarıda bulunmalıyım. Bu yüzden ne yaptığımı gerçekten bilmiyorum….



3

Kullandığım Linux Mint : 64 bit ve benim için :) çalıştı - 14

sudo apt-get install libgl1-mesa-glx libgl1-mesa-dev

2

Ubuntu 12.04 64-bit, GNOME 3.4'te ilk önce http://developer.android.com/sdk/installing/index.html'ye başvurdum ve / usr / lib / i386-linux-gnu oluşturacak ia32-lib'yi kurdum /mesa/libGL.so.1.2.0

Sonra aşağıdaki komutu çalıştırdım ve bu sorunu çözdüm:

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

Bu, grid istasyonunun cevabından biraz farklıdır.

Sanırım Mesa sürücüsünü yerel olarak yüklemenize gerek yok, bu da gerçek video sürücülerinizle sorunlara neden olabilir.


2

Ubuntu 64 bit'te,

1. libGL'yi kontrol edin,

$ 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. SDK'nın kurulu olduğu yerde bir sembolik bağlantı oluşturun

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

Bunun Ubuntu 64bit altındaki sorunu çözdüğünü onaylayabilirim.
Yermo Lamers

2

Ubuntu 12.10'da çalışmasını sağlamak için (Quantal Quetzal) 64-bit, iki şey yapmak zorunda:

1) LD_LIBRARY_PATH'yi başlatmanız gerekir

Örnek:

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

Yorumlar: konumunuza giden yolu değiştirin

2) Sembolik bir bağlantı oluşturmalısınız

a) locate libGLDoğru kitaplığı bulmak için kullanın :

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) Yumuşak bağlantı oluşturun

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

Yorumlar: 64 bit işletim sisteminde 64 bit kitaplık kullanın!

Şimdi öykünücüyü başlatın Sistemim Optimus ve Bumblebee'yi kurdum . "Intel Açık Kaynak Teknoloji Merkezi" "Mesa DRI Intel (R) Ironlake Mobile" "2.1 Mesa 9.0" veya "NVIDIA Corporation" "GeForce GT 330M / PCIe / SSE2" "3.3.0 NVIDIA 304.43" kullanabilirim.

a) Intel

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

b) Nvidia

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

Yorumlar:

  • Intel ve Nvidia kartları arasında herhangi bir fark görmedim ... Kesinlikle emülatör GPU olmadığı için yoğun .
  • Sistemimde bir Intel Core i5, emülatörü başlatmak neredeyse 1 dakika sürdü ... Lütfen sabırlı olun ... Öykünücüyü yüklendikten sonra oldukça hızlı buluyorum (beklemek için 1 dakika). Öykünücüyü Eclipse IDE'den başlatırsanız, öykünücü bir yazılım öykünmesi yapar (GPU kapalıdır) ve başlaması 1 dakika 30 sürer ... Intel veya Nvidia kartlarını kullanmaktan çok daha yavaştır !!!
  • verbose daha fazla teşhis görüntülemek için kullanılacak parametredir
  • optirunBumblebee'de Nvidia'yı kullanma komutudur. Bumblebee'niz yoksa kullanmayın!
  • avd sanal bir cihazdır
  • gpu on grafik kartını kullanmak için

1

OSError: libGL.so: paylaşılan nesne dosyası açılamıyor: Böyle bir dosya veya dizin yok

VNL'yi ilk kez başlatmaya çalıştığınızda Linux sistemlerinde görünebilir. Çözmek için, şurada (yönetici olarak) yeni bir bağlantı oluşturun /usr/lib:

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

64 bit Linux'unuz varsa /usr/lib64 instead.

Öncelikle, libGL.so.1.2içinde /usr/libveya /usr/lib64; libGL.so.1video sürücülerine bağlı olarak çağrılabilir veya onun yerine başka bir dizine yerleştirilebilir veya başka bir dizinde bulunabilir.

Bağlanılacak libGLdoğru dosyayı bulmak için locate'i kullanabilirsiniz.


1

Ben de aynı sorunu yaşadım. Ama benim durumumda, başka bir (daha iyi olduğunu düşünüyorum) yolla çözdüm.

Benim durumumda (Lubuntu 13.10), kütüphaneyi libgl1-mesa-devSynaptic Paket yöneticisi aracılığıyla kurmak da yeterliydi ( libgl1-mesa-drikütüphane, Lubuntuu dağıtımı kurulduğunda varsayılan olarak zaten kurulmuştu).

Bu, bir dosyadan diğerine bağlantı koymanın tüm zorluklarını çözer ve ayrıca sisteminizin kirlenmesini önler:

  • Birkaç ay (veya yıl) sonra, sistemi çalışır durumda tutmak için hangi özel bağlantıları koyduğunuzu nasıl anlayacaksınız?
  • Bunları kendiniz yapmaya başlarsanız gelecekteki güncellemelere ne dersiniz? "Manuel müdahale" nedeniyle bir şey kırılacak / güncellenmeyecek mi?

"Sistem mekanizmasını" kullanırsanız, hepsi sizin için yapılır. Ve doğru yapıldı. Bu yüzden bu araçlar ilk etapta orada.

En iyi rgds,


Az önce @Tanyasipeti'nin apt-get ile aynı şeyi yaptığını gördüm. Ama benim durumumda sorunu tamamen çözdü. Öykünücüyü hazırladım ve çalıştırdım.
GeertVc

13.10 için kendim anladım ve cevap olarak benzer bir şey eklemek istedim!
Veger

1

User1289608'e benzer şekilde, mevcut bir Mesa kurulumundan bir sym link yapabildim:

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

0

Ubuntu 12.04 64-bit kullanıyorum. Bağlama /usr/lib64/libGLC.so.0için/usr/lib64/libGL.so sorunu çözüyor gibi görünüyor.

DÜZENLEME: Hata mesajlarını durdurur, ancak öykünücü benim için hala yavaş.


Evet, emülatör benim için de inanılmaz derecede yavaş.
IgorGanapolsky

0

Bu benim için çalıştı:

DDMS'den adb'yi yeniden başlatın:
Eclipse'de: Pencere> Perspektifi Aç ...> Diğer> DDMS. Sol taraftaki bölmeden öykünücüyü seçin ve "Adb'yi yeniden başlat" ı seçin

Adb sunucusunu terminal penceresinden de yeniden başlatabilirsiniz.

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

0

LibGL klasörünü "bul" komutuyla buldum

/ Usr / lib / i386-linux-gnu / içinde olduğu ortaya çıktı

~ $ locate libGL
/usr/lib/i386-linux-gnu/libGLEW.so.1.8
/usr/lib/i386-linux-gnu/libGLEW.so.1.8.0
/ usr / lib / i386-linux-gnu / 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

Debian 7 'Wheezy' kurulumum için aşağıdaki komutu kullandım:

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

bu kadar!


0

Bu sorunu yaşadım çünkü AVD'mi oluştururken "Ana Bilgisayar GPU'sunu Kullan" seçeneğini işaretlemiştim. Bu seçenek işaretlenmeden denedim ve öykünücüyü başarıyla başlatabildim. Bu, test amaçlarım için kabul edilebilir, ancak ana GPU'yu kullanmak önemliyse, muhtemelen buradaki diğer çözümlerden bazılarını denemek isteyeceksiniz.



-1

Bu sorunu, hem 64 hem de 32 bit kitaplıklar olan libgl1'i yeniden yükleyerek çözdüm:

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

Arka plan: Daha önce ücretsiz radeon sürücüsünden fglrx'e dönmüştüm. Sanırım bu bir şekilde libgl1'imi mahvetti, çünkü fglrx kendi sürümüyle geliyor.

Ayrıca, burada sağlanan diğer çözümlerin muhtemelen tehlikeli olduğunu düşünüyorum, çünkü 32 bit paylaşımlı kitaplıkları (64 bit) / lib / dizinine sembolik olarak bağlamak yanlıştır.


-2

libgl1-mesa-*Yüklü paketleriniz olup olmadığını kontrol edin . Eğer öyleyse,libgl1-mesa-dev , sürümü olmayan paylaşılan nesneleri almak için paketi .

Bunu yapmak zorunda değilsin - bu Android ekibinin hatası. Onları rahat bırakın, onlar sadece Java geliştiricileri.


Ben zaten benim sistemde mesa-libGL-dev var, ama yine de hata var
php.khan

Bu benim için Ubuntu 11.10 32-bit üzerinde çalıştı. Libgl1-mesa-dev'i kurdum ve öykünücüyü başlatırken artık bir hata mesajı görünmüyordu. Herhangi bir bağlantı yapmam gerekmedi, ancak bu 64 bit için gerekli olabilir mi?
Katherine Rix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.