ATI 专有驱动程序重命名 libGL.so

ATI propietary drivers renaming libGL.so

本文关键字:libGL so 重命名 驱动程序 ATI      更新时间:2023-10-16

我最近重新安装了linux(mint 17),在我构建并运行我的项目后,它抱怨无法加载swrast。我想我必须安装 ati 驱动程序,它确实解决了这个问题:

Graphics:  Card: Advanced Micro Devices [AMD/ATI] Oland XT [Radeon HD 8670 / R7 250] bus-    ID: 01:00.0 
X.Org: 1.15.1 driver: fglrx Resolution: 1920x1080@60.0hz 
GLX Renderer: AMD Radeon R7 200 Series GLX Version: 4.4.13283 - CPC 14.501.1003 Direct Rendering: Yes

我现在遇到的问题是我无法再构建项目,因为 make 找不到libGL.so

No rule to make target `/usr/lib/x86_64-linux-gnu/libGL.so

看了看,似乎有一个重命名的版本,我不知道发生了什么......

/usr/lib/FGL.renamed.libGL.so.1.2
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/usr/lib/fglrx/fglrx-libGL.so.1.2
/usr/lib/i386-linux-gnu/libGL.so
/usr/lib/i386-linux-gnu/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so.1.2
/usr/lib/i386-linux-gnu/fglrx/fglrx-libGL.so.1.2
/usr/lib/i386-linux-gnu/mesa/FGL.renamed.libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa/FGL.renamed.libGL.so.1.2.0

我想我必须创建一些链接,但我不知道是哪个。我过去做过,它搞砸了 ati 安装。

看了看,似乎有一个重命名的版本,我不知道发生了什么......

libGL.so是GPU驱动程序的一部分(实际上它包含整个OpenGL实现)。这与 Windows 不同,在 Windows 中,opengl32.dll提供挂钩供驱动程序附加到。从技术上讲,在 Linux 中也有这种挂钩机制是更好的,但不幸的是我们没有。

为了缓解这种情况,Linux 发行版的包管理器通常会将驱动程序的libGL.so安装到隔离的目录中,并在 /usr/lib/ 中创建指向它的符号链接。由于某种原因,发行版的包管理器未安装的专有驱动程序的二进制包不遵循该约定,只是在这个结构上嘶吼。

老实说,在此期间实现该挂钩机制要容易得多,而不是创建这些符号链接。

让它工作了。我意识到 netbeans 在我安装 ati 驱动程序后实际上并没有重新生成我的 make 文件,我认为它正在尝试从旧位置拉入依赖项。当然,驱动程序仍然做一些时髦的事情,但至少我认为他们创建了自己的符号链接。我删除了该项目并重新导入了它,它现在可以正常工作。