Android에서 libGL.so를로드하지 못했습니다.


82

내가 사용하고 우분투 12.04 오라클과 (정확한 천산갑)를 JDK 나에서 안드로이드 에뮬레이터 실행하고 때 7 및 이클립스 는이 오류를주고, :

[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-linux_x86에 Android SDK가 설치되어 있으므로 다음을 수행했습니다.

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

이것은 / usr / lib에 링크하는 것처럼 오류를 해결하지만 루트가 필요하지 않으며 핵심 시스템 디렉토리를 엉망으로 만들지 않습니다.


5
이것은 libo의 "apt-get"명령과 결합하여 여기서 가장 깨끗한 솔루션입니다.
Dave Cameron 2012 년

libGL.so.1이 아직없는 경우 libo의 솔루션을 사용해야 할 수 있지만 파일을 링크하는 가장 깨끗한 위치입니다. 64 비트 libs에 32 비트를 넣을 필요가 없습니다 ....
Ajax

23
locate libGL먼저 5 월의 도움에
위안

2
내가 사용 find / -name 'libGL.so.1'하고 그것을 위치 /usr/lib/x86_64-linux-gnudebian jessie.
Justin Skiles 2014

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을 libglapi - 메사를 설치"을 선택하고 "는 sudo apt-get을 libx11-dev에 설치 : i386을 libreadline6-DEV : i386을 libgl1 - 메사 - GLX : i386을"첫째
stackOverlord

x86 용 libGL을 설치하지 않아도되었다고 생각합니다. ./sdk/tools/emulator64-x86을 사용하면 충분합니까? ( '64'참고)
jcarballo

1
오 이런, 어떤 종류의 설명이나 경고없이 많은 줄의 앱 설치를 게시하는 것은 좋지 않습니다.
Sebastian Mach

32

Ubuntu 12.04 64 비트를 사용하고 있습니다. 다음 명령을 사용하여 문제 해결

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

참고 : 이는 AMD / ATI 그래픽 드라이버를 사용하는 사용자에게만 적용됩니다.


1
이것은 나에게도 효과가 있었고 ATI 카드에서만 작동한다고 생각합니다. 이것은 32 비트 공유 라이브러리를 (64 비트) / lib / 디렉토리에 심볼릭 링크하기 때문에 기술적으로 잘못되었지만 Android 에뮬레이터가이 lib 만 찾는 것처럼 보입니다.
Alex Pretzlav 2012

3
libGL.so에 대한 파일 검색을 수행하고 위치에 따라 링크 명령을 조정하는 것이 좋습니다. 내 위치는 다음과 같습니다. / usr / lib / i386-linux-gnu / mesa
bytebender

2
내 것은 /usr/lib/x86_64-linux-gnu/mesa/libGL.so에 있었지만 32 비트 lib를 원하고 64 비트 lib를 제공했기 때문에 실행하려고하면 오류가 발생했습니다
Ben McCann

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 2013

Linux Mint도
마찬가지입니다.

13.04에서 작동합니다. tools / lib 디렉토리에 심볼릭 링크를 넣으면 다시 제거해야합니다.
Perseids

2
apt-get 명령은 Ubuntu 13.04 x64에서도 작동하며 symlink가 필요하지 않습니다.
Jason McVetta 2013 년

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

그러나 그것은 나를 위해 문제를 해결하지 못했습니다. 사실, 아마 내 시스템을 망 쳤을 것입니다.


/usr/lib/x86_64-linux-gnu/libGL.so에 시냅틱, libgl1 - 메사-DEV을 설치합니다 libGL.so와 검사
sergio91pt

1
GLEW는 다른 라이브러리 인 OpenGL Extension Wrangler 입니다. "대신"이 아니라 프로그램 이 libGL 에 추가 로 사용할 수있는 입니다.
Wyzard

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

NVidia Optimus :

듀얼 그래픽 (intel 및 nvidia)에서 실행하면서 다음을 사용했습니다.

  1. Bumblebee를 설치합니다 ( https://wiki.ubuntu.com/Bumblebee#Installation 참조 ).
  2. 필요한 lib를 설치하십시오.
  3. nvidia 개별 카드에서 에뮬레이터를 실행합니다.

이것은 트릭을 수행해야합니다.

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을 사용하십시오.

optirun emulator @<avd_name>

어제 Linux 만 설치했다는 경고를해야합니다. 그래서 내가 뭘하는지 잘 모르겠어요….




2

Ubuntu 12.04 64 비트, GNOME 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

이것은 gridstation의 대답과 약간 다릅니다.

Mesa 드라이버를 로컬에 설치할 필요가 없어 실제 비디오 드라이버에 문제가 발생할 수 있습니다.


2

Ubuntu 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. SDK가 설치된 심볼릭 링크를 만듭니다.

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

이것이 Ubuntu 64bit에서 문제가 해결되었음을 확인할 수 있습니다.
Yermo Lamers 2014-08-14

2

Ubuntu 12.10 (Quantal Quetzal) 64 비트에서 작동하도록하려면 다음 두 가지를 수행해야합니다.

1) LD_LIBRARY_PATH를 초기화해야합니다.

예 :

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

설명 : 위치 경로 변경

2) 심볼릭 링크를 만들어야합니다.

a) 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 비트 라이브러리를 사용하십시오!

이제 에뮬레이터를 시작하십시오. 내 시스템은 Optimus 이고 Bumblebee를 설치했습니다. . "인텔 오픈 소스 기술 센터" "Mesa DRI 인텔 (R) Ironlake Mobile" "2.1 Mesa 9.0"또는 "NVIDIA Corporation" "GeForce GT 330M / PCIe / SSE2" "3.3.0 NVIDIA 304.43"을 사용할 수 있습니다.

a) 인텔

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

b) 엔비디아

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

코멘트:

  • Intel과 Nvidia 카드의 차이점을 보지 못했습니다. 에뮬레이터가 GPU 집약적 입니다.
  • 내 시스템의 Intel Core i5에서 에뮬레이터를 시작하는 데 거의 1 분이 걸렸습니다 ... 잠시만 기다려주세요 ...로드 후 에뮬레이터가 다소 빠릅니다 (기다리는 데 1 분). Eclipse 에서 에뮬레이터를 시작하는 경우 IDE 가 소프트웨어 에뮬레이션을 수행하고 (GPU가 꺼져 있음) 시작하는 데 1 분 30이 걸립니다. Intel 또는 Nvidia 카드를 사용하는 것보다 훨씬 느립니다 !!!
  • verbose 더 많은 진단을 표시하는 데 사용할 매개 변수입니다.
  • optirunBumblebee에서 Nvidia를 사용하는 명령입니다. Bumblebee가 없으면 사용하지 마십시오!
  • avd 가상 장치입니다.
  • gpu on 그래픽 카드를 사용하려면

1

OSError : libGL.so : 공유 객체 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리가 없습니다.

처음으로 VNL을 실행하려고 할 때 Linux 시스템에 나타날 수 있습니다. 이를 해결하려면 (관리자 권한으로) 다음에서 새 링크를 만드십시오 /usr/lib.

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

64 비트 Linux를 사용하는 경우 /usr/lib64 instead.

당신이 실제로 있는지 먼저 확인 libGL.so.1.2/usr/lib/usr/lib64; libGL.so.1비디오 드라이버에 따라 대신 호출 되거나 다른 디렉토리에 위치 할 수 있습니다 .

libGLfind를 사용 하여 링크 할 올바른 파일을 찾을 수 있습니다 .


1

나는 같은 문제가 있었다. 그러나 제 경우에는 다른 방법으로 해결했습니다.

제 상황 (Lubuntu 13.10)에서는 단순히 libgl1-mesa-devSynaptic Package Manager를 통해 라이브러리 를 설치하는 것으로 충분했습니다 ( libgl1-mesa-dri라이브러리는 Lubuntuu 배포판을 설정할 때 기본적으로 이미 설치되어 있음).

이렇게하면 한 파일에서 다른 파일로 링크를 넣는 번거 로움이 모두 해결되고 시스템 오염도 방지됩니다.

  • 몇 달 (또는 몇 년) 후에 시스템을 계속 실행하기 위해 어떤 전용 링크를 추가했는지 어떻게 알 수 있습니까?
  • 이러한 작업을 직접 시작하면 향후 업데이트는 어떻습니까? "수동 개입"으로 인해 문제가 발생하거나 업데이트되지 않습니까?

"시스템 메커니즘"을 사용하면 모든 것이 완료됩니다. 그리고 올바르게 완료되었습니다. 이것이 바로 이러한 도구가 애초에 존재하는 이유입니다.

최고의 rgds,


방금 @Tanyasipeti가 apt-get을 통해 동일한 작업을 수행하는 것을 보았습니다. 그러나 제 경우에는 문제가 완전히 해결되었습니다. 에뮬레이터를 설치하고 실행했습니다.
GeertVc

나는 13.10에 대해 스스로 알아 냈고 답으로 비슷한 것을 추가하고 싶었습니다!
Veger

1

user1289608과 유사하게 기존 Mesa 설치에서 sym 링크를 수행 할 수있었습니다.

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문제를 해결하는 것 같다.

편집 : 오류 메시지를 중지하지만 에뮬레이터가 여전히 느립니다.


예, 에뮬레이터는 저에게도 매우 느립니다.
IgorGanapolsky

0

이것은 나를 위해 일했습니다.

DDMS에서 adb를 다시 시작합니다.
. Eclipse : Window> Open Perspective ...> 기타> DDMS. 왼쪽 창에서 에뮬레이터를 선택하고 "Restart adb"를 선택합니다.

터미널 창에서 adb 서버를 다시 시작할 수도 있습니다.

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

0

"locate"명령으로 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-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'설치의 경우 다음 명령을 사용했습니다.

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"를 선택했기 때문에이 문제가 발생했습니다. 해당 옵션을 선택하지 않은 상태에서 시도했고 에뮬레이터를 성공적으로 시작할 수있었습니다. 이것은 내 테스트 목적으로 허용되지만 호스트 GPU를 사용하는 것이 중요하다면 여기에서 다른 솔루션을 시도해 보는 것이 좋습니다.



-1

64 비트 및 32 비트 라이브러리 인 libgl1을 다시 설치하여이 문제를 해결했습니다.

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

배경 : 이전에는 무료 라데온 드라이버에서 fglrx로 다시 전환했습니다. fglrx가 자체 버전과 함께 제공되기 때문에 어떻게 든 내 libgl1을 망친 것 같습니다.

게다가 여기에 제공된 다른 솔루션은 32 비트 공유 라이브러리를 (64 비트) / lib / 디렉토리에 심볼릭 링크하는 것이 잘못 되었기 때문에 위험 할 수 있다고 생각합니다.


-2

libgl1-mesa-*패키지가 설치되어 있는지 확인하십시오 . 그렇다면 libgl1-mesa-dev패키지를 설치 하여 버전없는 공유 개체를 가져옵니다.

이 작업을 수행 할 필요는 없습니다. Android 팀의 오류입니다. 그들에게 휴식을주십시오. 그들은 단지 Java 개발자입니다.


난 이미 내 시스템에 메사-libGL-DEV을 가지고 있지만 여전히 오류가
php.khan

이것은 Ubuntu 11.10 32 비트에서 저에게 효과적이었습니다. libgl1-mesa-dev를 설치했는데 에뮬레이터를 시작할 때 더 이상 오류 메시지가 나타나지 않았습니다. 링크를 수행 할 필요가 없었지만 64 비트에서 필요할 수 있습니까?
Katherine Rix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.