libGL.so.1の読み込みエラー


48

さまざまなソフトウェア(特にSteamとYenka)を実行しようとすると、次のようなエラーが発生しました。 error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

NVidia Optimusカードを搭載した64ビットシステムを実行しています(専用のグラフィックカードを必要とする特定のWindows専用ソフトウェアのデュアルブート)。バンブルビーをインストールしましたが、推奨どおりNVidiaからダウンロードしたドライバーではなく、nvidia-currentドライバーを使用しています。

ライブラリ(libGL.so.1)はのトップディレクトリに存在しませんが、にソフトリンクとして/usr/lib存在/usr/lib32/nvidia-current/usr/lib32/nvidia-current/libGL.so.304.64ます。

ldconfig -pの出力のセクション:

libGL.so.1 (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so

明らかにその名前のライブラリがロードされていますが、それらはにありますが/usr/lib/x86_64-linux-gnu、インストールされたソフトウェアはそれを「見る」ことができないようです。Steamの場合、optirunで実行すると動作しますが、Yenkaの場合はそうではありません。optirunにより、格納され/usr/lib32/nvidia-currentているライブラリが使用され、Steamが実行できるようになるため、Yenkaが実行されない理由がわかりません。

ソフトウェアが通常のメサライブラリを表示できない理由、およびYenkaがnvidia-currentライブラリでの実行を拒否する理由を説明できますか?

回答:


40

nvidiaドライバーをインストールすると、skypeはnvidiaパッケージで提供されるi386 libを探します。これは存在しないため、mesaが提供するi386 libGL.so.1を使用しても問題ありません。

(ubuntu-gnome raring、nvidia-325を使用)および(ubuntu-gnome saucy、nvidia-319を使用)でテストした結果、次のように修正できました。

update-alternatives --display i386-linux-gnu_gl_conf

これにより、利用可能なオプションが表示されます。

i386-linux-gnu_gl_conf - auto mode
  link currently points to /usr/lib/nvidia-325/alt_ld.so.conf
/usr/lib/i386-linux-gnu/mesa/ld.so.conf - priority 500
  slave i386-linux-gnu_xorg_extra_modules: /usr/lib/i386-linux-gnu/xorg/x11-extra-modules
/usr/lib/nvidia-325/alt_ld.so.conf - priority 8602
Current 'best' version is '/usr/lib/nvidia-325/alt_ld.so.conf'

そのため、以下を実行します。

sudo update-alternatives --config i386-linux-gnu_gl_conf

次に、最適な代替手段を選択します(i386-linux-gnu / mesa / ld.so.confを選択しました):以下の出力には、代替i386-linux-gnu_gl_confの2つの選択肢があります(/etc/ld.so.confを提供します。 d / i386-linux-gnu_GL.conf)。

  Selection    Path                                     Priority   Status
------------------------------------------------------------
* 0            /usr/lib/nvidia-325/alt_ld.so.conf        8602      auto mode
  1            /usr/lib/i386-linux-gnu/mesa/ld.so.conf   500       manual mode
  2            /usr/lib/nvidia-325/alt_ld.so.conf        8602      manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/i386-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode

それが完了したら、実行してみてください:

sudo ldconfig

これで完了です。


2
私はまったく同じでしたが、これは完璧に機能しました。ありがとう(Ubuntu 13.10)
Xtremesupremacy3

煩わしい-ld.so.confオプションしか持っていないので、「リンクグループi386-linux-gnu_gl_confには1つの選択肢しかありません(/etc/ld.so.conf.d/i386-linux-gnu_GL.confを提供) :/usr/lib/i386-linux-gnu/mesa/ld.so.conf。設定するものはありません。」
dez93_2000 14年

どのnvidiaパッケージをインストールしましたか?libgl1-mesa-glxがインストールされていますか?信頼できるのlibgl1-メサ-GLXに:I386は/usr/lib/i386-linux-gnu/mesa/ld.so.conf(とassocaited libGL.so.1 *ライブラリを提供します。
eurythmia

素晴らしい答え。Nvidiaドライバーに切り替えた後、Qtプログラムの実行中にエラーが発生しました- QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkedそして[xcb] This is most likely caused by a broken X extension library-これに続いてクリアされました。
マシュー

ありがとう。14.04でも機能します。これは、他のプログラムには影響しません。しますか?あるものを修正すると、他の10個が破損するように。
スディールハンガー

51

skypeをインストールした後も同じ問題が発生しているので、このエラーを修正するためにどちらかを行うことができます。

最初のコマンドは次のコマンドでアプリケーションを実行します。たとえば、im running skype ..

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype

ソース

2番目に私がやったこと

sudo nano /etc/ld.so.conf.d/skype.conf

そして次の行を追加します

/usr/lib/i386-linux-gnu/mesa/

保存して終了

そして最後に走る

sudo ldconfig -v

私がこれでlibGL.so.1エラーが修正されることを願っています

libGL.so.1も見つけることができます。

   find / -name libGL.so.1

私は最終的にそれを修正することができました。残念ながら、どのように覚えているかわかりませんが、ライブラリへのランダムなシンボリックリンクを作成し、ldconfigを何度も実行してから、前述のシンボリックリンクを削除したことを覚えています。すべてが正常に動作するようになりました。
p0llard

これはうまくいきました!最後に!また、これらの手順の前に@ jdp407が言ったことを覚えています。
ガンダーズMēness13年

1
このソリューションは優れていますが、一度に1つのアプリケーションしか処理しません。libGL.soを必要とする他の32ビットアプリケーションがある場合は、それらのアプリケーションに対してプロセスを繰り返す必要があります。これは、更新の選択肢を使用してグローバルこのプリファレンスを設定するのが最善です
eurythmia

@eurythmiaまた、中/ libと実行はsudo ldconfigを、それをコピーすることができ、それがグローバルなアクセスとなります
カシム

悲しいことに、xubuntuで動作しません。「エラー:ld.so:LD_PRELOADのオブジェクト '/usr/lib/i386-linux-gnu/mesa/libGL.so.1'をプリロードできません(共有オブジェクトファイルを開くことができません) :無視」; skype.confは/ld.so.conf.d/とルックス異なるファイルではないことなど/ dbusの-1 / system.dである...
dez93_2000

12

ここでの修正は機能しますが、もっと簡単な修正があります。

skype動作しないが動作する場合はoptirun skype、次の方法で修正できます。

sudo apt-get install bumblebee-nvidia --reinstall

(AMDカードでBumblebeeを使用しているユーザーは、同等の再インストールが必要になる場合があります)。

Bumblebeeはこの問題の原因と修正の両方を行いますが、libGLライブラリを統合カードおよびより強力なカードで利用できるようにするときに、インストール時に適用されます。これは、Bumblebeeをインストールしたときにそれらのライブラリがまだインストールされていなかった場合には発生しないため、再インストールが必要です。マルハナバチの設定にも影響しませんが、これを行った後は明らかに確認する価値があります。


3
私にとってはうまくいきます...ありがとう。Ubuntu gnome 14.04
aditia

1
間違いなく最も簡単なソリューションです!最近システムを2回再インストールしたため、インストール順序と関係があることがわかりました(Ubuntu 14.04 64ビット+ Nvidia Optimusグラフィックカード)。初めてSkypeをインストールしてからBumblebeeを初めてインストールしたときは、問題はありませんでした。最初にBumblebeeをインストールしてからSkypeをインストールしたのは2回目で、この問題が発生しました。この回答に示されているようにbumblebee-nvidiaを再インストールするだけで問題は解決しました!
シッコ14

私はこれが私のものよりも良い解決策のように見えることに同意する傾向があります。
ユーリズミア

2

デスクトップエントリを編集します。

sudo nano /usr/share/applications/skype.desktop

Execを次のように変更します。

Exec=env PULSE_LATENCY_MSEC=60 LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype %U

これが実行されます:

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1

ランチャー/デスクトップエントリを使用して起動すると、Skypeを実行する前に。

アプリケーションランチャーを使用して起動する限り、その後は正常に実行されます。


ファイルlibGL.so.1はそのパスにない可能性があります(Debian 8 / Jessieではそうではありませんでした)。入力する必要があるパスを見つけるにはLD_PRELOAD、システム上のi386ファイルを見つけるだけですsudo find / -name libGL.so.1 2>/dev/null。私はそれを見つけ、それを/usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1使用してうまく動作しましたLD_PRELOAD
f.ardelian

1

これが明確化に役立つかどうかはわかりませんが、skypeとlibGL.so.1で同じ問題が発生しました。また、オプティマスカードとマルハナバチで13.04を実行しています。

optirunなしでskypeを実行すると問題が発生しましたが、問題なく動作しました。デスクトップファイルを変更して、毎回optirunで実行するようにしました。一定!


スカイプにもっとエネルギーを欲するカードを使用しているので、あまり修正されていません。実際、primusではなくVirtualGLブリッジを使用している場合、bumblebeeをインストールせずにnvidiaカードを常に使用している場合と同じくらいの電力を消費します。
ジョンハンナ

1

同様の問題があり、64ビットシステムに32ビットライブラリをインストールすることで解決しました。 apt-get install ia32-libs


0

公式スチームページから最新バージョンをダウンロードし、必要なものをターミナルからダウンロードできるようにします(必要な場合)。bumblebee ppaをまだ追加していない場合は追加します。

sudo add-apt-repository ppa:bumblebee/stable

次のコマンドで更新してください:

sudo apt-get update

インストールしますvirtualgllibgl.so.1Steamでエラーを解決しました)

sudo apt-get install virtualgl

0

試してください:

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