web-dev-qa-db-ja.com

libGl、fbConfigsの問題、更新ごとの問題?

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

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

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

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

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

37
pushandpop

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を修正します)。

29

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

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

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

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

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

こちら で説明されています。

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

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

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

その後、再起動します

シンボリックリンクで迷子になってから試してみましたが、Steamはドライバーのインストール後すぐに正常に動作し、400メガバイト以上のシステムアップデートを行った後も再び動作しました。

4
Adrian

エイドリアンの答えに代わるものを提供するために: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
NWRichmond

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

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

Sudo apt install libnvidia-gl-418:i386

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

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

2
vmicho

aptのみのソリューションで、シンボリックリンクやld.so.conf.dをいじる必要はありません。

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

私は認めなければならない、これがなぜ私にとってうまくいくのかわからないが、うまくいった。この特定の場合、次のように新しいエントリを追加して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回重複していないのに重複していないのかわかりません!

2
bbarker

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

 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
DapangLiu

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

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

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

0
Mimi the Cat