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

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

一切顺利,直到第8步,即使用sudo amdconfig --initial创建一个新的xorg.conf文件,但是我收到以下错误:

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

我尝试在里面用/usr/lib32创建文件/etc/ld.so.conf.d/lib32.conf ,这是建议的第二个答案,然后运行sudo ldconfig但没有改变。

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

编辑2:从第一个链接的第七步开始,重新启动我的顶部和侧面的统一面板以及短划线都丢失了,但我假设当我完成驱动程序安装时这将被修复。

编辑3: fglrxinfoglxinfo命令发生相同的错误(在执行第7步之前,glx信息正常)。

EDIT4: lspci -v | grep -A10 VGA输出 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  [disabled] Capabilities:  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:  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 

注意:

对于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 

并刷新我们的GNU链接器:

 sudo ldconfig 

一切正常后, ldconfig -p | grep libGL.so.1 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 

不是直接编辑文件ld.so.conf,而是在/etc/ld.so.conf.d子目录中创建一个名为local.conf的文件,该文件只包含/ usr / local / lib行。 那是,

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

在/ usr / lib64下

然后运行ldconfig命令。 (这假设文件/etc/ld.so.conf包含行include /etc/ld.so.conf.d/*.conf。)

你只需要这样做一次。

内核更新后我突然遇到了同样的问题。 我无法登录图形界面。 运行“aticonfig”命令我得到了这个错误,我也在Xorg.0.log中找到了它。 我正在运行一个Debian Jessie 64位系统,带有32位库,用于wine和skype等软件。 删除“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驱动程序安装程序创建,因为它错误地解释了系统结构。 这个错误来自系统中的“/ usr / lib64 /”目录。 64位系统没有“/ usr / lib64 /”文件夹,因为所有64位版本的库都位于“/ usr / lib /”中。 因此,安装程序错误地将系统用于32位系统并创建到32位版本的“libGL.so.1”的链接

你怎么解决它? – 首先在“/ 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 

这将删除所有错误的链接。

即使在这一步之后,我已经能够获得一个图形登录,并发出没有属性驱动程序的警告。

  • 接下来,重命名为“/ 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驱动程序安装程序并再次运行它。

现在您将发现创建了64位版本的libGL.so.1的正确链接。

 # 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 

现在您可以正常再次获得图形登录。