Linuxでエミュレーターを起動できない(Ubuntu 15.10)


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

それを修正するには?同様のエラーのあるトピックを読みましたが、役に立ちません。


この回答で示された追加の線
refle

回答:


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

これによりエミュレータが起動し、アプリを実行するときに[デバイスの選択]ダイアログでエミュレータを選択できます。


ありがとうございました!しかし、私の場合、OSにfglrxパッケージが表示されません。インストールして動作しましたが。しかし、システムの更新後、このバグが発生しました。私はこのパッケージを再インストールし、それは再び動作しました:)英語で申し訳ありません。
'ах2016年

リンクの投稿23で概説されている修正により、Ubuntu 16.04でエミュレーターを起動できましたが、エミュレーター画面に黒しか表示されません。
dazza5000 2016年

5
私は醜い方法で問題を解決しました: cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
Yu Jiaao

場合、それはあなたが持つエミュレータの名前を見つけることができ、便利です:LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
DaveyDaveDave

170

この問題は、Android SDKにバンドルされているlibstdc ++。so.6を使用することで解決されます。

  • エミュレータには、-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


その後、Android Studioでアプリを実行しようとすると、接続されたデバイス(この場合はNexus_5_API_23)が表示されます。
Alejo Bernardin

3
既存のSDKライブラリを移動したりリンクしたりせずに、シェルスクリプトを介してエミュレータを適切に起動できるため、これが最良の答えです。
Potaito、2016年

19
Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1に追加する必要があります$HOME/.profile
Greg Dan

不明なオプション:-use-system-libs :(
JaroslavZárubaJan

1
@GregDan:またはto/etc/environment
serv-inc

123
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6

それは私のために働いた


1
libstdc ++をインストールする必要があったようですが、その後初めてシミュレータを実行できました。ご協力ありがとうございます。
Pini Cheyni 2017年

6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6にある私のlibstdc ++。so.6
Joshua

2
@ジョシュア-正解。Ubuntu 17.10+の場合、最後のステップで次のものが必要です$ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Timothy C. Quinn

私のために働いた。何がそれを壊したのか知りたいです。
Toby Wilson

この解決策は私にとってはうまくいきます。Ubuntu 16.04から18.04に更新した後、エミュレーターが壊れました。ありがとう!
ruX 2018年

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 %20Opened&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++

これでうまくいきました。ただし、Android SDKの別のディレクトリを調べる必要がある場合があります。鉱山はで発見された/home/daniel/Android/Sdk/tools/lib64/libstdc++
ダニエル・レビン

はい、「/ tools」の前のセクションパスは、ユーザー名とSdkインストールフォルダーによって異なる場合があります。
luizMello 2016年

3
動作確認、ubuntu xenialのパスは/usr/lib/x86_64-linux-gnu/libstdc++.so.6
arisalexis

ありがとう...これはubuntu 16.10でも解決策でした、上記のコメントと同じパスln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6〜/ Android / Sdk / tools / lib64に/のlibstdc ++
フアン

29

AVD設定のエミュレートされたパフォーマンスグラフィックスオプションで「ソフトウェア」を使用します。非常にシンプルなソリューション。


それは簡単ですが、それは:)非常に遅いです
Шах

ubuntu 16 64ビットで作業し、ドロップダウンを選択するだけです:) 10x
Vasil Valchev

それが私にとって有効な唯一のソリューションでした(Ubuntu 16.04LTS)
Feu

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年

私はこのバグを10分前に持っています:)
tetar

10

コマンドLocate libstdc ++。so.6を使用して、システムのデフォルトlibstdc ++。so.6をより適切に見つけます。

そして、〜/ Android / Sdk / tools / lib64 / libstdc ++ /にあるファイルのAndroid SDKバージョンのバックアップを取ります。

上記のパスに同じ名前のlibstdc ++。so.6のソフトリンクを作成し、システムのデフォルトファイルを指す既存のパスを置き換えます

この方法では、コマンドラインから毎回エミュレータを再起動する必要はありません。



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

Ubuntuはさまざまなフレーバーを提供しているため、適切なnvidiaパッケージを確認してください。例えば:

$ 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からボトムアップ戦略でテストしました。

お役に立てば幸いです。


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マネージャから通常通り起動されます。


0

とを使用して同様の問題がi965_dri.soありswrast_dri.so、GUIでソフトウェアグラフィックスに変更できませんでした。

だから私はエミュレータのフォルダ(Show on DiskAVDMのリンク)に行き、見つけましたconfig.ini

ここで、GPUの使用を停止するために次の行を変更しました。

hw.gpu.enabled=no


-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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.