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

ATI propietary drivers renaming libGL.so

我最近重新安装了 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 安装。

Had a look and there seems to be a renamed version, I don't know what's going on...

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

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

老实说,与创建这些符号链接混乱相比,同时实施挂钩机制要容易得多。

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