libGL.so.1の分割エラー

libGL.so.1の分割エラー

しばらく前に私が投稿を投稿しました。Debian Wheezy 64ビットで32ビットアプリケーションを実行する

ありがとう@JosephR面倒なエラーなしで実行できましたcould not find libGL.so.1

ただし、実行中にアプリケーションがクラッシュするようになりました。クラッシュ後、端末に次のメッセージが表示されます。

Aug  2 10:04:16 acs-laptop kernel: [  213.472753] aquaria[7006]: segfault at 8 ip 00000000f41238fb sp 00000000ffceabc0 error 4 in libGL.so.1.2[f4107000+54000]

ドライバを再インストールしても問題は解決されず、問題の原因が何であるかわかりません。libGL.so64ビットシステムで実行されている32ビットバージョンにバグがありますか?

答え1

libgl1-mesa-glxOpenGL APIの無料実装をインストールしています。

多くの場合、独自のドライバは独自のバイナリ実装(最適化、ハードウェアアクセラレーション)を提供します。

ドライバを再インストールしましたが(どのように?どちら?)、i386を探しているゲームの代わりにamd64 libGLバージョンがインストールされます(それで何も起こりません)。

ゲームの実行中に使用しているバージョンを確認できます。たとえば、次のようになります。

grep libGL /proc/$(pidof aquaria)/maps

または、ldd前の記事で提案したコマンドを再利用してください。

とにかく問題は、ゲームがlibGLに実装されていないいくつかの機能を使用しているか、予期しない方法で機能を使用していることである可能性があるため、問題を理解する唯一の方法は次のとおりです。デバッグ

パッケージをインストールしようとすると、libgl1-mesa-glx-dbg:i386segfaultが発生した場合は、数値の代わりにいくつかの関数名が表示されることがあります。

私は64ビットシステムで32ビットバイナリをデバッグするためにこのツールを使用したことがありませんがgdb(確認してみましょう)、backtrace起動するのに役立ちます。

だからこれあなたがプレイしている水族館です。オープンソース(ゲームデータではありません)です。つまり、64ビットで動作するようにゲームを構築することが非常に可能であることを意味します。

編集する

  • これソースストアです
  • これクロス
  • ここフォーラムでは有用な情報を提供します。読む新しいバイナリインストール後のcpスクリプトについて
  • そしてここUbuntuはamd64とi386用に事前に構築されたパッケージです。幸いなことに、debをそのままインストールしてみるか、少なくともaquariaamd64から実行可能ファイルを抽出できます。.deb

これを試してみたいなら...サポートまず作業コピーです。

関連情報