“加载共享库时出错:libGL.so.1:错误的 ELF 类:ELFCLASS32”安装 ATI 驱动程序

Iva*_*ner 6 xorg mesa software-installation

我正在按照本页第 3.2 节的说明进行操作。

一切顺利,直到第 8 步,即sudo amdconfig --initial 用于创建新的 xorg.conf 文件,但出现以下错误:

amdconfig: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS32
Run Code Online (Sandbox Code Playgroud)

我尝试/etc/ld.so.conf.d/lib32.conf使用/usr/lib32inside创建文件,正如这里的第二个答案所建议的那样,然后运行sudo ldconfig但没有任何改变。

编辑:安装libgl1-mesa-glx:i386并运行sudo ldconfig,即使重新启动后问题仍然存在。

EDIT2:从第一个链接的第七步开始,在重新启动我的顶部和侧面统一面板以及仪表板后,都丢失了,但我假设这将在我完成驱动程序安装后修复。

EDIT3:fglrxinfoglxinfo命令发生相同的错误(在执行第 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
Run Code Online (Sandbox Code Playgroud)

编辑:输出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
Run Code Online (Sandbox Code Playgroud)

Bra*_*iam 12

注意:

对于 Ubuntu 16.04 LTS 及更高版本,AMD 不再支持 AMD Catalyst 或 fglrx 驱动程序。

如果您使用的是 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
Run Code Online (Sandbox Code Playgroud)

并刷新我们的 GNU 链接器:

sudo ldconfig
Run Code Online (Sandbox Code Playgroud)

一切正常后,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
Run Code Online (Sandbox Code Playgroud)

如果您需要 32 位库来运行 32 位应用程序,您可以安装该libgl1-mesa-glx:i386软件包。但在这种情况下,请记住将您的LD_LIBRARY_PATH时间设置为 32 位库所在的位置,这样就不会弄乱您的其他程序。

 export LD_LIBRARY_PATH="/path/to/library/"
 ./run_some_32_bit_program
Run Code Online (Sandbox Code Playgroud)