“加载共享库时出错: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: fglrxinfo
和glxinfo
命令发生相同的错误(在执行第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
现在您可以正常再次获得图形登录。