use*_*138 6 shared-library debian
使用原生 OpenGL
/home/software/Mercury_3.3/c_linux/bin/mercury.x: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64
Run Code Online (Sandbox Code Playgroud)
Ben*_*oit 12
看起来您的应用程序是 32 位应用程序,但正在尝试加载 64 位库。在 64 位安装中,您可以安装任何库的两个版本(32 位和 64 位)。32bits 下可以找到/usr/lib3264bits 下/usr/lib64。
在 Linux 上,库使用路径序列进行搜索,有点像 PATH 变量列出所有目录,以在没有给出路径时查找要运行的可执行文件。这个搜索库的序列在一个名为 的变量中定义LD_LIBRARY_PATH。
问题是 64 位版本的目录在 32 位版本的目录之前。通常 32 位和 64 位版本的库名称是相同的。
您可以通过为您的应用程序创建一个小的启动脚本来解决这个问题,如下所示:
#!/bin/bash
export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH
<your binary> $*
Run Code Online (Sandbox Code Playgroud)
如果已经有一个脚本来启动这个应用程序,你可以添加这行
export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
到它,靠近顶部。
我更喜欢第一种方法,创建一个特定的脚本,因为包提供的任何启动脚本都可能在更新时被覆盖。
| 归档时间: |
|
| 查看次数: |
37942 次 |
| 最近记录: |