我正在使用Ubuntu 12.04(精确穿山甲)和Oracle JDK 7,当我从Eclipse运行Android模拟器时,它会出现此错误:
[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
此外,模拟器非常慢。我该如何解决这个问题?
答案 0 :(得分:82)
我将Android SDK安装到〜/ android-sdk-linux_x86中,所以我做了:
ln -s /usr/lib/libGL.so.1 ~/android-sdk-linux_x86/tools/lib/libGL.so
这解决了错误,就像链接到/ usr / lib一样,但它不需要root,也不会破坏核心系统目录。
答案 1 :(得分: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
答案 2 :(得分:32)
我正在使用64位的Ubuntu 12.04。使用以下命令解决问题
sudo ln -s /usr/lib32/fglrx/libGL.so.1.2 /usr/lib/libGL.so
注意:这仅适用于使用AMD / ATI图形驱动程序的用户。
答案 3 :(得分: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
答案 4 :(得分:14)
对我来说有用(ubuntu 12.04 64bit)只是为了运行:
sudo apt-get install libgl1-mesa-dev
我发现目录libGL.so
/usr/lib/x86_64-linux-gnu/
32位版本的安装无效。
答案 5 :(得分:6)
在64位Ubuntu 12.04上,没有/ usr / lib64。它只是/ usr / lib。 另外,在我的机器上,libGL.so不存在。而是文件是libGLEW.so
要安装/usr/lib/LibGL.so,您可以运行: sudo apt-get install libgl1-mesa-dev
然而,它并没有为我解决问题。事实上,它可能搞砸了我的系统。
答案 6 :(得分:4)
我认为我做对了,没有警告也没有缓慢......但这可能不适用于专有驱动程序。
确保安装了libgl1-mesa-glx:i386(即使你有一个x64 SO文件)。然后做:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so
答案 7 :(得分: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
答案 8 :(得分:3)
我使用Linux Mint 14 - 64位,对我来说,它有效:):
sudo apt-get install libgl1-mesa-glx libgl1-mesa-dev
答案 9 :(得分:3)
参考http://developer.android.com/sdk/installing/index.html,我安装了ia32-libs并做了:
ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/i386-linux-gnu/mesa/libGL.so
这就是我为解决这个问题所做的一切。
答案 10 :(得分:3)
NVidia Optimus:
在双图形(intel和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。所以我真的不知道我在做什么......
答案 11 :(得分: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
答案 12 :(得分: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。我可以使用英特尔开源技术中心&#34; &#34; Mesa DRI英特尔(R)Ironlake Mobile&#34; &#34; 2.1 Mesa 9.0&#34;或者&#34; NVIDIA公司&#34; &#34; GeForce GT 330M / PCIe / SSE2&#34; &#34; 3.3.0 NVIDIA 304.43&#34;。
a)英特尔
/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
评论:
答案 13 :(得分: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驱动程序,这可能会导致您的真实视频驱动程序出现问题。
答案 14 :(得分:1)
与user1289608类似,我可以从现有的Mesa安装程序中进行sym链接:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so
答案 15 :(得分:1)
我有同样的问题。但就我而言,我解决了另一个问题(我想,更好)。
在我的情况下(Lubuntu 13.10),只需通过Synaptic Package Manager安装库libgl1-mesa-dev
就足够了(默认情况下,在设置Lubuntuu发行版时已经安装了libgl1-mesa-dri
库) 。
解决了将链接从一个文件放到另一个文件的所有麻烦,并且还可以防止污染您的系统:
如果你使用“系统机制”,那就完成了。并正确完成。这就是为什么这些工具首先存在的原因。
最佳rgds,
答案 16 :(得分: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
或其他内容,或位于另一个目录中,具体取决于视频驱动程序。
您可以使用locate libGL
找到要链接的正确文件。
答案 17 :(得分:0)
对于我的Debian 7'Wheezy'安装,我使用了以下命令:
ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 opt/android/tools/lib/libGL.so
答案 18 :(得分:0)
我遇到了这个问题,因为我在创建AVD时检查了“使用主机GPU”。我试用了该选项未选中,我能够成功启动模拟器。这对我的测试来说是可以接受的,但是如果使用主机GPU很重要,那么你可能想在这里尝试一些其他的解决方案。
答案 19 :(得分: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
就是这样!
答案 20 :(得分:0)
我通过“locate”命令找到了libGL的文件夹
原来是在/ usr / lib / i386-linux-gnu /
〜$ 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
答案 21 :(得分:0)
我遇到了同样的问题。重新安装Nvidia驱动程序为我修复了segmentation fault。
答案 22 :(得分:0)
这对我有用:
从DDMS重新启动adb:
在Eclipse中:Window&gt; Open Perspective ...&gt;其他&gt; DDMS。从左侧窗格中选择模拟器,然后选择“重新启动adb”
您也可以从终端窗口重新启动adb服务器。
android-sdk-linux/platform-tools/adb kill-server
android-sdk-linux/platform-tools/adb start-server
答案 23 :(得分:0)
我正在使用64位的Ubuntu 12.04。将/usr/lib64/libGLC.so.0
链接到/usr/lib64/libGL.so
似乎可以解决问题。
编辑:它会停止错误消息,但模拟器对我来说仍然很慢。
答案 24 :(得分:-1)
我通过重新安装libgl1解决了这个问题,包括64位和32位库:
$ sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-glx:i386
背景:之前我从免费的radeon驱动程序切换回fglrx。我想这有点搞砸了我的libgl1,因为fglrx带有自己的版本。
此外,我认为这里提供的其他解决方案可能很危险,因为将32位共享库符号链接到(64位)/ lib /目录中是错误的。
答案 25 :(得分:-2)
检查您是否安装了libgl1-mesa-*
个软件包。如果是这样,请安装libgl1-mesa-dev
包以获取未版本化的共享对象。
你不应该这样做 - 这是Android团队的错误。给他们一个休息,他们只是Java开发人员。