103

我尝试启动模拟器,但它输出到日志中:

libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
libGL error: unable to load driver: swrast_dri.so 
libGL error: failed to load driver: swrast 
X Error of failed request:  GLXBadContext   
Major opcode of failed request:  155 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request:  47
Current serial number in output stream:  46 
libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
libGL error: unable to load driver: swrast_dri.so 
libGL error: failed to load driver: swrast 
X Error of failed request:  GLXBadContext
Major opcode of failed request:  155 (GLX)
Minor opcode of failed request:  6 (X_GLXIsDirect)   
Serial number of failed request:  47   
Current serial number in output stream:  46 
libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600
libGL error: unable to load driver: swrast_dri.so 
libGL error: failed to load driver: swrast 
X Error of failed request:  BadValue (integer parameter out of range for operation)   
Major opcode of failed request:  155 (GLX)   
Minor opcode of failed request:  24 (X_GLXCreateNewContext)   
Value in failed request:  0x0   
Serial number of failed request:  33   
Current serial number in output stream:  34 
QObject::~QObject: Timers cannot be stopped from another thread emulator: WARNING: Increasing RAM size to 1GB

如何解决?我阅读了具有类似错误的主题,但这对我没有帮助。

4

13 回答 13

170

使用系统中可用的 libstdc++.so.6 而不是与 android sdk 捆绑的那个可以解决此问题。

  • 模拟器有一个开关-use-system-libs来做到这一点。

    ~/Android/Sdk/tools/emulator -avd Nexus_5_API_23 -use-system-libs

  • 或者,您可以为您的用户/系统设置ANDROID_EMULATOR_USE_SYSTEM_LIBS环境变量。1这样做的好处是确保即使您从 Android Studio 中启动模拟器也能正常工作。

更多详情:https ://code.google.com/p/android/issues/detail?id=197254#c15

于 2016-04-14T13:49:35.277 回答
123
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6

它对我有用

于 2017-04-21T07:16:18.870 回答
79

看一眼

https://code.google.com/p/android/issues/detail?id=197254

特别是项目#3 和#19。这是一种解决方法,而不是真正的解决方案,但它让我再次行动起来。您将不得不调整以下命令:

  • libstdc++.so.6文件在系统上的位置- 我曾经locate libstdc++.so.6找到这个
  • 模拟器可执行文件的路径
  • 你的模拟器的名字

所以我的命令是

LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5_API_21

然后这会启动模拟器,您可以在运行应用程序时在“设备选择器”对话框中选择它。

于 2016-03-12T20:58:39.090 回答
52

我在 Ubuntu 16.04 64 位中有类似的错误。对我来说,答案#23解决方案效果很好 https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter %20打开&groupby=&sort=&id=197254

$ cd $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6 $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++
于 2016-06-04T13:43:02.033 回答
29

在 AVD 设置中的 Emulated Performance Graphics 选项中使用“软件”。非常简单的解决方案。

于 2016-09-25T12:53:12.810 回答
20

我这样做,它正在工作

cd ~/Android/Sdk/emulator/lib64/libstdc++ 
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6
于 2018-01-25T14:12:03.513 回答
10

使用命令 locate libstdc++.so.6 更好地定位您的系统默认 libstdc++.so.6

然后备份~/Android/Sdk/tools/lib64/libstdc++/中的android sdk版本文件

并为上述路径中的同名libstdc++.so.6创建一个软链接,替换现有的指向系统中默认文件的软链接

这样我们就不需要每次从命令行重新启动模拟器。

于 2016-04-30T07:34:56.157 回答
9

尝试在模拟器设置中更改图形选项: 在此处输入图像描述

于 2017-03-04T08:58:20.087 回答
0

在我的机器上启动 AVD 时我也遇到了很多问题。挣扎于使用系统库,创建到本地库的符号链接等......

真正让它对我有用的是安装 nvidia 驱动程序

sudo apt install nvidia-340

我的发行版(注意我没有使用 Ubuntu 15.10):

$ uname -a
Linux ruapehu 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/issue
Ubuntu 16.04.1 LTS \n \l

确保你检查了适合你的 nvidia 包,因为 Ubuntu 提供了不同的风格。例如:

$ sudo apt list "nvidia-[0-9][0-9][0-9]" 
Listing... Done
nvidia-304/xenial 304.131-0ubuntu3 amd64
nvidia-331/xenial 340.96-0ubuntu3 amd64
nvidia-340/xenial,now 340.96-0ubuntu3 amd64 [installed]
nvidia-346/xenial 352.63-0ubuntu3 amd64
nvidia-352/xenial 361.42-0ubuntu2 amd64
nvidia-361/xenial,now 361.42-0ubuntu2 amd64

我以自下而上的策略测试了这个列表,从 361 到我找到一个有效的(在我的例子中是 340)。

希望有帮助。

于 2016-09-20T22:10:32.513 回答
0

就我而言(Ubuntu 16.10 64 位,Android Studio 2.3)库位于另一个地方。所以命令是:

/home/myusername/Android/Sdk/emulator/lib64/libstdc++

➜  libstdc++ ll
total 9,3M
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18

➜  libstdc++ mv libstdc++.so.6 libstdc++.so.6.bak
➜  libstdc++ mv libstdc++.so.6.0.18 libstdc++.so.6.0.18.bak
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6.0.22 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 

➜  libstdc++ ll
total 9,3M
lrwxrwxrwx 1 myusername myusername   25 мар 29 13:18 libstdc++.so.6 -> /usr/lib32/libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18.bak
lrwxrwxrwx 1 myusername myusername   30 мар 29 13:19 libstdc++.so.6.0.22 -> /usr/lib32/libstdc++.so.6.0.22
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.bak

现在模拟器正常从 AVD 管理器启动。

于 2017-03-29T10:44:48.403 回答
0

我在使用i965_dri.soand时遇到了类似的问题swrast_dri.so,我无法在 GUI 中更改为软件图形。

所以我去了模拟器的文件夹(Show on DiskAVDM中的链接)并找到了config.ini

在这里,我只是更改了以下行以阻止它使用 GPU:

hw.gpu.enabled=no
于 2017-06-05T08:22:36.437 回答
0

这已在 Android Emulator 27.2.9 中修复。请参阅此处列出的第一个修复程序: https ://developer.android.com/studio/releases/emulator#fixes

于 2018-05-15T20:51:22.230 回答
-1

$ cd ~/Android/Sdk/emulator/lib64/libstdc++ $ mv libstdc++.so.6 libstdc++.so.6.bak $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so .6

于 2018-05-07T11:14:08.747 回答