libGl、fbConfigsの問題は、各更新を通じて急ぎますか?


38

SFMLプロジェクトをコンパイルすると問題が発生します(グラフィックは表示されません)。

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

このエラーは、このチュートリアルでnvidia-driversを再インストールするだけで解決できます:https : //askubuntu.com/a/451248/341889

..しかし、新しいアップデートを取得するとき-このエラーが返されます;(何をすべきですか?それは解決策ではありません-システムのアップデートを使用しないでください...

PSとはい、nvidia-driversをインストールした後にすべての変更を保存しました


1
これは、メサを動的にロードするOpenGL実行可能ファイルを起動しようとすると起こりますlibGL.soLD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram。デフォルトでは、Ubuntu 16.04が使用する/usr/lib/nvidia-361/libGL.soため、/etc/ld.so.conf.d/x86_64-linux-gnu_GL.confすべて正常に動作します。
Ciro Santilli新疆改造中心法轮功六四事件

回答:


29

swrast事はソフトウェアレンダラです。つまり、グラフィックカードのハードウェアドライバーが見つかりません。多数のlibGLライブラリがインストールされており、それらのライブラリへのシンボリックリンクが多数あります。これらを確認するには、シェルからこれを実行します。

find /usr -iname "*libGL.so*" -exec ls -l -- {} + 

問題の原因として考えられるのは、グラフィックドライバーをインストールすると、これらのシンボリックリンクが壊れることがあることです。(特に/usr/local/lib/libGL.so.1.2.0、間違ったlibまたは間違ったリンクへのsymリンクのいずれかである可能性があります)。

OpenGLプログラムが実行しようとしているライブラリを調べるには、少し冗長にして、簡単なOpenGLプログラムを実行します。これは、標準のOpenGLテストプログラムを使用して確認できます。

LIBGL_DEBUG=verbose glxgears

SFMLと同じように失敗することを願っています。これによりLIBGL_DEBUG、どのOpenGLライブラリをロードしようとしているかがわかります。さらに、ロードしようとし/usr/local/lib/libGL.so.1.2.0ているライブラリはほぼ確実になります(編集:これは、私がこれに答えた時点で私のマシンの標準OpenGLライブラリでした。現在、マシン上の他のバージョンである可能性があります)。

(この場合)解決策/usr/local/lib/libGL.so.1.2.0は、それが正しいOpenGLライブラリを指すシンボリックリンクであることを確認することです。私の場合、Nvidia 3.40ドライバーがあるので、次を実行しました。

ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0

ただし、自分に適したOpenGLライブラリ(最初の検索コマンドにリストされている)を指すようにする必要があります。

要約すると、(独自の)グラフィックスドライバーをインストールすると、OpenGLライブラリに使用されるシンボリックリンクが破損する可能性があります。この問題を解決するには、シンボリックリンクを手動で修正します(/usr/local/lib/libGL.so.1.2.0最初に修正します)。


この問題は、エラーメッセージを理解するのに役立ちましたが、修正はしませんでした。「nvidiaドライバーの再インストール」という回答は、実際に問題を解決してくれたので、良い補完となりました。
ヘンコ

@henkoはい、nvidiaドライバーを再インストールするのが、おそらくこれを整理する最も速くて簡単な方法です。何らかの理由でドライバーを再インストールしても問題が解決せず、手を汚す必要がある場合は、このアプローチに戻ります。
痴呆ハリネズミ

6
「ほぼ確実に/usr/local/lib/libGL.so.1.2.0であること」を除くすべての部分を理解しました。私が示している「libGL:OpenDriver:try /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL:OpenDriver:try /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so」私のシステムでこれらのファイルが存在...
サミュエル・リー

1
ご説明ありがとうございます。私は問題についてよく理解しています。私の場合、ubuntu swrast.soに確認済みのバグがあり、人々が議論していることも指摘したいと思います。
サミュエル・リー

1
ありがとう@dementedhedgehogこれは非常に明確な投稿で、私の問題を解決するのに役立ちました(ちなみにFedora-25で)。= :)。アップ投票。
-NYCeyes

5

Ubuntu 16.10でもnvidia-340ドライバーで同じ問題が発生しましたが、ここで解決できるものはありませんでした。

32ビットライブラリがライブラリパス上にないことが判明しました。

この1つのライナーは私のために働いた:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"

4

nVidiaドライバーを指す正しいシンボリックリンクを取得する際に問題が発生していたため、別の方法が見つかりました。

ここで概説されています

また、最新バージョンの349.16で利用可能なPPAを介してnVidiaドライバーをインストールする方法についてもリストします。

まず、ターミナルウィンドウ(Ctrl+ ALT+ T)を開いて入力して、現在インストールされているnVidiaドライバーをアンインストールします

sudo apt-get remove nvidia*

システムを再起動します

次に、別のターミナルを開き、次を入力します

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-349 nvidia-settings
sudo add-apt-repository -r ppa:xorg-edgers/ppa

その後、再起動します

シンボリックリンクで迷子になってから試してみましたが、ドライバーをインストールした直後にスチームが正常に動作し、400メガバイト以上のシステム更新があった後も再び動作しました。


2
ドライバーのインストール後、xorg-edgers ppaから離れることはお勧めしません。多くの不安定なパッケージが更新されます。
パイロット

nvidia *を削除するだけでこの問題はすでに解決しました!
-xtofl

3

エイドリアンの答えに代わるものを提供するために:PPAで見つかったドライバーの代わりにNVIDIAから直接供給された独自のドライバーを使用したい場合、最新の独自のドライバーをインストール(または私の場合は再インストール)することでスワーストエラーを排除できます。

NVIDIAドライバーをまだお持ちでない場合は、NVIDIAのWebサイトからドライバーをダウンロードしてください。次に、tty(ctrl+ alt+ F1)に切り替えて、ログインマネージャーをオフにします。

lightdmを使用している場合、 $ sudo service lightdm stop

gdmを使用している場合、 $ sudo service gdm stop

インストールスクリプトに移動して実行し、プロンプトに従います。プレインストールスクリプトが失敗しても心配する必要はありません。DKMSと32ビット互換ライブラリの登録は常に受け入れます。ドライバーがインストールされたら、マシンを再起動します。

$ sudo reboot

古いNVIDIAドライバーからインストールスクリプトを既にお持ちの場合は、上記のようにNVIDIAドライバーインストールスクリプトを実行しますが、「-update」オプションを使用します。

$ sudo ./NVIDIA-Linux-x86_64-***.**.run --update

これにより、ドライバーの最新バージョンが取得されます。

これによりlibGL error: failed to load driver: swrastエラーが修正されました。


3

Ubuntu 18でも同じ問題が発生しました。これは基本的に32ビットアプリでのみ発生しました。だから私の/ usr / lib / i386-linux-gnu /フォルダが疑わしく空だったので、私の考えは32ビットnvidia何かをインストールすることでした。

ごくわずかな試行の後、これによりスチームとワインが起動しないという私の問題が修正されました。

sudo apt install libnvidia-gl-418:i386

(そして、あなたが持っているバージョンに418を変更します)

興味深いのは、インストール中にアプリケーションが依存関係の欠落について文句を言わなかったことです。


これは...少なくとも、質問に関連私の問題のいずれかを固定しているようだ
アンドリュー・

32ビットであることが理由である可能性があります。他のプログラムは正常に動作しますが、おそらく64ビットです。それにもかかわらず、これは問題なく動作します(バージョン
Zoe

2

私は認めなければならない、これがなぜ私にとってうまくいくのかわからないが、うまくいった。この特定の場合、次のように新しいエントリを追加してld.so.conf.dエントリを「修正」します。

sudo ln -s /usr/lib/nvidia-381/ld.so.conf /etc/ld.so.conf.d/nvidia64.conf
sudo ldconfig 

次を実行するまで、これは理にかなっていますfind

$ find -L /etc/ld.so.conf.d -type f | xargs grep -i nvidia
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib32/nvidia-381

なぜ同じエントリが3回重複していないのに重複していないのかわかりません!


Ubunu 17.04で動作します。ご注意-パスは/ usr / lib / nvidia-xxxで、xxxはドライバー番号なので、コマンドをそれに合わせます。
user2082382

2

これaptは私のために働いた唯一のソリューションで、シンボリックリンクやいじくり回しはありませんld.so.conf.d

apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386

1

私はこの行を使用します:

 sudo rm /usr/lib/i386-linux-gnu/libGL.so.1

そしてそれは動作します。

実行するとそのような入力が表示されるためsudo ldconfig -p | grep -i gl.so

libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
libcogl.so.20 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcogl.so.20
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so

1
人々はこれが何を意味するのかに従うべきですか...?
アンドリュー

私のために働く、ありがとう!
ヘット

0

これを実行するだけです:

sudo apt-get install libnvidia-gl-(the version of your driver):i386

ドライバーのバージョンはnvidia-settingsに表示されます。


-3

Macbook ProからUbuntu VMにsshするときにこの奇妙な問題に直面していましたが、Ubuntu 16.04に以下のNvidiaドライバーをインストールすると問題が修正されました。これがあなたのために働くことを願っています。

sudo apt-get install nvidia-331


1
VMゲストシステムにNvidia GPUドライバーをインストールするのはなぜですか?O_O
デビッド・フェルスター

ダウン票は適切ではありません。@DavidFoersterは、GPUドライバーをVMにインストールしても意味がありません(GPUハードウェアをVMにパススルーしない限り)。しかし:私はSSH経由でXを実行していますが、同じ問題に直面しています。リモートマシン(VM)でXアプリケーションを起動すると、ほとんどの場合、OPの質問に記載されているエラーメッセージが表示されます。私はまだその問題の解決策を見つけていないが、場合、リモートVM上のGPUのドライバをインストールするだろう(私は解決策になる、私はエラーが離れて行くことを確認するために、関係なく、それは理にかなっているかどうかの、それを行うだろう現在は無視します)。
ビナルス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.