Używam Ubuntu 12.04 (Precise Pangolin) z Oracle JDK 7, a kiedy używam emulatora Androida z Eclipse , wyświetla ten błąd:
[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
Również emulator działa bardzo wolno. Jak mogę rozwiązać ten problem?
locate libGL
na początku może pomócfind / -name 'libGL.so.1'
i znajduje go w/usr/lib/x86_64-linux-gnu
sprawiedebian jessie
.W 64-bitowym systemie Ubuntu 12.04 zrób to w następujący sposób:
$ 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
Źródło: instalowanie wymaganych pakietów (Ubuntu 12.04)
źródło
sudo apt-get install --reinstall gcc-4.7-multilib
jak znalazłem w odpowiedzi askubuntu.com/a/236114Używam Ubuntu 12.04 w wersji 64-bitowej. Użyj następującego polecenia, aby rozwiązać problem
sudo ln -s /usr/lib32/fglrx/libGL.so.1.2 /usr/lib/libGL.so
Uwaga : dotyczy to tylko tych, którzy używają sterowników graficznych AMD / ATI.
źródło
W przypadku 32-bitowego Ubuntu 12.04 LTS zadziałało to:
sudo apt-get install libgl1-mesa-dev
Żadne z poniższych nie zadziałało:
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
źródło
To, co działa dla mnie (ubuntu 12.04 64bit), to tylko uruchomienie:
sudo apt-get install libgl1-mesa-dev
Okazało się, że
libGL.so
istnieje w katalogu/usr/lib/x86_64-linux-gnu/
Instalacja wersji 32-bitowej nie działała.
źródło
W 64-bitowym Ubuntu 12.04 nie ma / usr / lib64. Jest to tylko / usr / lib. Ponadto na moim komputerze nie ma libGL.so. Zamiast tego plik to libGLEW.so
Aby zainstalować /usr/lib/LibGL.so, możesz uruchomić: sudo apt-get install libgl1-mesa-dev
Jednak nie rozwiązało to problemu. W rzeczywistości prawdopodobnie schrzanił mój system.
źródło
To zadziałało dla mnie na 64-bitowym Ubuntu 12.10 i pakiecie ADT:
ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 ~/adt-bundle-linux-x86_64/sdk/tools/lib/libGL.so
Jeśli nie masz,
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
po prostu zainstalujlibgl1-mesa-glx
sudo apt-get install libgl1-mesa-glx
źródło
Myślę, że dobrze zrozumiałem, żadnych ostrzeżeń i spowolnienia ... To może jednak nie działać z zastrzeżonymi sterownikami.
Upewnij się, że libgl1-mesa-glx: i386 jest zainstalowany (nawet jeśli masz plik SO x64). Następnie wykonaj:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so
źródło
NVidia Optimus:
Działając na podwójnej grafice (Intel i nvidia), użyłem:
To powinno załatwić sprawę:
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
Gdy chcesz uruchomić emulator, po prostu użyj optirun:
optirun emulator @<avd_name>
Powinienem ostrzec, że wczoraj zainstalowałem Linuksa. Więc tak naprawdę nie wiem, co robię….
źródło
Odnosząc się do http://developer.android.com/sdk/installing/index.html , zainstalowałem ia32-libs i zrobiłem:
ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/i386-linux-gnu/mesa/libGL.so
To wszystko, co zrobiłem, aby rozwiązać ten problem.
źródło
/usr/lib/x86_64-linux-gnu/mesa
zamiast tego musiałem użyćUżywam Linux Mint 14 - 64 bit i dla mnie zadziałało :):
sudo apt-get install libgl1-mesa-glx libgl1-mesa-dev
źródło
W 64-bitowym systemie Ubuntu 12.04, GNOME 3.4, najpierw odniosłem się do http://developer.android.com/sdk/installing/index.html i zainstalowałem ia32-lib, które wygeneruje / usr / lib / i386-linux-gnu /mesa/libGL.so.1.2.0
Następnie uruchomiłem poniższe polecenie i rozwiązałem ten problem:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so
To trochę różni się od odpowiedzi Gridstation.
Wydaje mi się, że nie ma potrzeby instalowania lokalnie sterownika Mesa, co może powodować problemy z prawdziwymi sterownikami wideo.
źródło
W 64-bitowym systemie Ubuntu
1. Sprawdź 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. Utwórz łącze symboliczne, w którym jest zainstalowany zestaw SDK
ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/local/android-studio/sdk/tools/lib/libGL.so
źródło
Aby to działało na Ubuntu 12.10 64-bitowym (Quantal Quetzal), musisz zrobić dwie rzeczy:
1) Musisz zainicjalizować LD_LIBRARY_PATH
Przykład:
export LD_LIBRARY_PATH=~/tests/android/adt-bundle-linux-x86_64/sdk/tools/lib
Komentarze: zmień ścieżkę do swojej lokalizacji
2) Musisz utworzyć dowiązanie symboliczne
a) Użyj,
locate libGL
aby znaleźć właściwą bibliotekę: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) Utwórz łącze miękkie
sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so
Komentarze: używaj biblioteki 64-bitowej w 64-bitowym systemie operacyjnym!
Teraz uruchom emulator. Mój system to Optimus i zainstalowałem Bumblebee . Mogę używać „Intel Open Source Technology Center” „Mesa DRI Intel (R) Ironlake Mobile” „2.1 Mesa 9.0” lub „NVIDIA Corporation” „GeForce GT 330M / PCIe / SSE2” „3.3.0 NVIDIA 304.43”.
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
Uwagi:
verbose
jest parametrem używanym do wyświetlania dalszych informacji diagnostycznychoptirun
to polecenie wykorzystania Nvidii na Bumblebee. Jeśli nie masz Bumblebee, nie używaj go!avd
to urządzenie wirtualnegpu on
skorzystać z karty graficznejźródło
OSError: libGL.so: nie można otworzyć pliku obiektu współdzielonego: nie ma takiego pliku lub katalogu
Może pojawić się w systemach Linux podczas pierwszej próby uruchomienia VNL. Aby go rozwiązać, utwórz (jako administrator) nowy link w
/usr/lib
:sudo ln -s /usr/lib/libGL.so.1.2 /usr/lib/libGL.so
Jeśli masz 64-bitowy system Linux, użyj
/usr/lib64 instead
.Najpierw sprawdź, czy faktycznie masz
libGL.so.1.2
w/usr/lib
lub/usr/lib64
;libGL.so.1
zamiast tego może być nazwany lub inny, lub znajdować się w innym katalogu, w zależności od sterowników wideo.Możesz użyć locate,
libGL
aby znaleźć właściwy plik do połączenia.źródło
Miałem ten sam problem. Ale w moim przypadku rozwiązałem to w inny (myślę, że lepszy) sposób.
W mojej sytuacji (Lubuntu 13.10) wystarczyło po prostu zainstalować również bibliotekę
libgl1-mesa-dev
poprzez menedżera pakietów Synaptic (libgl1-mesa-dri
biblioteka była już domyślnie zainstalowana podczas konfigurowania dystrybucji Lubuntuu).To rozwiązuje wszystkie kłopoty związane z umieszczaniem łączy z jednego pliku do drugiego, a także zapobiega zanieczyszczeniu systemu:
Jeśli używasz „mechanizmu systemowego”, wszystko jest zrobione za Ciebie. I poprawnie zrobione. Właśnie dlatego te narzędzia są na pierwszym miejscu.
Najlepsze rgds,
źródło
Podobnie jak w przypadku user1289608, udało mi się utworzyć łącze sym z istniejącej instalacji Mesy:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so
źródło
Używam Ubuntu 12.04 w wersji 64-bitowej. Łączenie
/usr/lib64/libGLC.so.0
z/usr/lib64/libGL.so
Wydaje że witryny rozwiązuje problem.EDYCJA: Zatrzymuje komunikaty o błędach, ale emulator nadal działa wolno.
źródło
To zadziałało dla mnie:
Zrestartuj adb z DDMS:
In Eclipse: Window> Open Perspective ...> Other> DDMS. Wybierz emulator z lewego panelu bocznego i wybierz „Uruchom ponownie adb”
Możesz również ponownie uruchomić serwer adb z okna terminala.
android-sdk-linux/platform-tools/adb kill-server android-sdk-linux/platform-tools/adb start-server
źródło
Znalazłem folder libGL za pomocą polecenia „zlokalizuj”
Okazało się, że znajduje się w / usr / lib / i386-linux-gnu /
źródło
Podczas instalacji Debiana 7 w wersji Wheezy użyłem następującego polecenia:
ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 opt/android/tools/lib/libGL.so
źródło
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
Otóż to!
źródło
Miałem ten problem, ponieważ podczas tworzenia AVD zaznaczyłem „Użyj GPU hosta”. Wypróbowałem to z niezaznaczoną opcją i udało mi się pomyślnie uruchomić emulator. Jest to dopuszczalne dla moich celów testowych, ale jeśli użycie hosta GPU jest ważne, prawdopodobnie będziesz chciał wypróbować inne rozwiązania tutaj.
źródło
Miałem ten sam problem. Ponowna instalacja sterownika Nvidii naprawiła błąd segmentacji .
źródło
Rozwiązałem ten problem, ponownie instalując libgl1, zarówno biblioteki 64-, jak i 32-bitowe:
$ sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-glx:i386
Tło: Wcześniej przerzuciłem się z darmowego sterownika Radeon z powrotem na fglrx. Wydaje mi się, że to w jakiś sposób zepsuło moje libgl1, ponieważ fglrx ma swoją własną wersję.
Poza tym myślę, że inne przedstawione tutaj rozwiązania są prawdopodobnie niebezpieczne, ponieważ błędne jest dowiązanie symboliczne 32-bitowych bibliotek współdzielonych do katalogu (64-bitowego) / lib /.
źródło
Sprawdź, czy masz
libgl1-mesa-*
zainstalowane pakiety. Jeśli tak, zainstalujlibgl1-mesa-dev
pakiet, aby uzyskać niewersjonowane obiekty udostępnione.Nie powinieneś tego robić - to błąd zespołu Androida. Daj im spokój, są tylko programistami Java.
źródło