为什么在加载共享库时出现’错误:libGL.so.1:错误的ELF类:ELFCLASS64’当我运行Mercury时?

使用原生OpenGL

/home/software/Mercury_3.3/c_linux/bin/mercury.x: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64 

看起来您的应用程序是32位应用程序,但正在尝试加载64位库。 在64位安装上,您可以安装任何库的版本(32位和64位)。 在/usr/lib32下可以找到32位,在/usr/lib64下可以找到/usr/lib64

在Linux上,库使用路径序列进行搜索,有点像PATH变量列表所有目录,以查找在没有给出路径时要运行的可执行文件。 搜索库的序列在名为LD_LIBRARY_PATH的变量中定义。

问题是64位版本的目录位于具有32位版本的目录之前。 通常,32位和64位版本的库名称相同。

您可以通过为您的应用程序创建一个小的启动脚本来解决此问题:

 #!/bin/bash export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH  $* 

如果已有脚本启动此应用程序,则只需添加该行即可

 export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH 

它靠近顶部。

我更喜欢第一种方法,创建一个特定的脚本,因为在更新的情况下,包可能会覆盖任何启动脚本。