web-dev-qa-db-ja.com

「共有ライブラリのロード中のエラー:libGL.so.1:間違ったELFクラス:ELFCLASS32」ATIドライバのインストール

このページ のセクション3.2の指示に従っていました。

Sudo amdconfig --initialを使用して新しいxorg.confファイルを作成するステップ8まではすべてうまくいきましたが、次のエラーが表示されます。

amdconfig: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS32

ファイル/etc/ld.so.conf.d/lib32.confを内部に/usr/lib32で作成し、2番目の回答 here を提案し、Sudo ldconfigを実行しましたが、何も変更されませんでした。

編集:libgl1-mesa-glx:i386をインストールし、Sudo ldconfigを実行しました。再起動後も問題は続きました。

EDIT2:最初のリンクのステップ7以降、ユニティのトップパネルとサイドパネルを再起動した後、ダッシュも失われますが、ドライバのインストールが完了すると修正されると思います。

EDIT3:fglrxinfoおよびglxinfoコマンドでも同じエラーが発生します(手順7を実行する前はglx情報は正常でした)。

EDIT4:lspci -v | grep -A10 VGAの出力( 完全な出力

00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) (prog-if 00 [VGA controller])
    Subsystem: Dell Device 0572
    Flags: bus master, fast devsel, latency 0, IRQ 45
    Memory at c1000000 (64-bit, non-prefetchable) [size=4M]
    Memory at b0000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 4000 [size=64]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: <access denied>
    Kernel driver in use: i915
01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Chelsea LP [Radeon HD 7730M] (prog-if 00 [VGA controller])
    Subsystem: Dell Device 0572
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at a0000000 (64-bit, prefetchable) [size=256M]
    Memory at c0000000 (64-bit, non-prefetchable) [size=256K]
    I/O ports at 3000 [size=256]
    Expansion ROM at c0040000 [disabled] [size=128K]
    Capabilities: <access denied>
    Kernel driver in use: fglrx_pci

編集:dpkg -S libGL.so.1の出力:

       libgl1-mesa-glx:AMD64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
       libgl1-mesa-glx:AMD64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
6
Ivan Lerner

ご了承ください:

Ubuntu 16.04 LTS以上では、AMD CatalystまたはfglrxドライバーはAMDでサポートされなくなりました。

16.04 LTS以上を使用している場合は、自分で操作する可能性が非常に高くなります。以下は、質問で説明されているケースのみを対象としています。それ以降のバージョンで動作することを保証することはできません。

コメントによって解決した問題は、64ビットシステムで32ビットライブラリを使用していたことです。

間違ったELFクラス:ELFCLASS32

クラスの末尾は64である必要があったため、このエラーが発生しました。方法は、32ビットライブラリを削除してから64ビットを再インストールすることです。

Sudo apt-get purge libgl1-mesa-glx:i386
Sudo apt-get --reinstall install libgl1-mesa-glx

GNUリンカーを更新します。

Sudo ldconfig

すべてが問題なければ、ldconfig -p | grep libGL.so.1が表示されます:

libGL.so.1 (libc6) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so.1 (libc6) => /usr/local/lib/libGL.so.1

32ビットアプリケーションの実行に32ビットライブラリが必要な場合は、libgl1-mesa-glx:i386パッケージをインストールすることができます。ただし、この場合、LD_LIBRARY_PATHを一時的に32ビットライブラリの場所に設定することを忘れないでください。そうすれば、他のプログラムが混乱することはありません。

 export LD_LIBRARY_PATH="/path/to/library/"
 ./run_some_32_bit_program
11
Braiam

ファイルld.so.confを直接編集する代わりに、/ usr/local/lib行だけを含むサブディレクトリ/etc/ld.so.conf.dにlocal.confというファイルを作成します。あれは、

/etc/ld.so.conf.d/local.confの内容:

/ usr/lib64

次に、ldconfigコマンドを実行します。 (これは、ファイル/etc/ld.so.confに/etc/ld.so.conf.d/*.confを含む行が含まれていることを前提としています。)

これは一度だけ行う必要があります。

0
goel

カーネルの更新後、同じ問題が突然発生しました。グラフィカルインターフェイスにログインできませんでした。 「aticonfig」コマンドを実行すると、このエラーが発生し、Xorg.0.logでも見つかりました。 wineやskypeなどのソフトウェア用に32ビットライブラリを備えたDebian Jessie 64ビットシステムを実行しています。 「libgl1-mesa-glx:i386」パッケージを削除すると、skypeとwine32もアンインストールされ、問題は解決しませんでした。

AMDドライバーインストーラーは、インストーラープログラム内でアーキテクチャを正しく認識したようですが、システムアーキテクチャの誤った解釈から32ビットライブラリへの誤ったリンクを作成することがわかりました。

ライブラリに対してローカライズコマンドを実行すると、次の情報が得られる場合があります。

# find / -name libGL.so*
/usr/lib/i386-linux-gnu/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so
/usr/lib/i386-linux-gnu/libGL.so.1.2
/usr/lib/i386-linux-gnu/libGL.so.1.2.0
/usr/lib/libGL.so
/usr/lib/libGL.so.1.2
/usr/lib/libGL.so.1
/usr/lib64/libGL.so.1.2
/usr/lib64/libGL.so.1
/usr/lib64/libGL.so

しかし、 "/ usr/lib"のシステムの標準ライブラリは、 "/ usr/lib/i386-linux-gnu /"のライブラリバージョンにリンクし、libGL.so.1ライブラリの32ビットバージョンを作成することがわかります。デフォルトのバージョン。このリンクは、システム構造の誤った解釈からAMD Driver Installerによって作成されます。この間違いは、システムに「/ usr/lib64 /」ディレクトリがあることに起因しています。ライブラリの64ビットバージョンはすべて「/ usr/lib /」にあるため、64ビットシステムには「/ usr/lib64 /」フォルダーがありません。そのため、インストーラはシステムを32ビットシステムと間違え、「libGL.so.1」の32ビットバージョンへのリンクを作成します

どうすれば修正できますか? -最初に「/ usr/share/ATI」にあるドライバーのアンインストーラーを実行します

# ls -lah /usr/share/ATI
-rw-r--r--   1 root root 2,4K oct 19 20:51 fglrx-install.log
-rwxr--r--   1 root root  18K oct 19 20:51 fglrx-uninstall.sh

これにより、すべての間違ったリンクが削除されます。

このステップの後でも、Propertary Driverがないことを警告するグラフィカルなログインを取得できました。

  • 次に、「/ usr/lib64 /」ディレクトリの名前を変更して無効にします。
#cd /usr
#ls -lah 
 drwxr-xr-x 182 root root 40K oct 19 20:50 lib 
 drwxr-xr-x 5 root root 4,0K oct 19 20:40 lib64 
#pwd 
 /usr
#mv lib64 lib64_2015-10-19 
#ls -lah 
 drwxr-xr-x 182 root root 40K oct 19 20:50 lib 
 drwxr-xr-x 5 root root 4,0K oct 19 20:40 lib64_2015-10-19 
  • 次に、AMD Driver Installerに戻り、再度実行します。

これで、libGL.so.1の64ビットバージョンへの正しいリンクが作成されました。

# ls -lah /usr/lib/libGL.so.1.2
lrwxrwxrwx 1 root root 33 oct 19 20:50 /usr/lib/libGL.so.1.2 -> /usr/lib/fglrx/fglrx-libGL.so.1.2

これで、通常どおりグラフィカルログインを再度取得できるようになります。

0