libGL.so 和 gl.h 在标准路径中不可用

Mat*_*bel 6 nvidia 11.10 opengl mesa

我刚刚从 xswat ppa 全新安装了 11.10 + nvidia-current(因为 ubuntu 附带的当前版本对我的 gpu 损坏了)。

请花时间了解每个步骤。我不知道去哪里报告这个问题。

安装 nvidia-current[-dev]

安装 nvidia-current 和 nvidia-current-dev 后,这些文件丢失:

/usr/lib/libGL.so
/usr/include/GL/gl.h
Run Code Online (Sandbox Code Playgroud)

两者都安装在:

/usr/lib/nvidia-current/libGL.so
/usr/include/nvidia-current/GL/gl.h
Run Code Online (Sandbox Code Playgroud)

默认情况下,这些无法通过标准路径访问,并且破坏了对许多软件的编译。(没有找到 gl.h,然后没有找到 -lGL。)

设计方案损坏

为了解决这个问题,我们需要安装 libgl1-dev。libgl1-dev 在 /usr/include/GL/gl.h 中安装 mesa gl.h 并在 /usr/lib/libGL.so 中安装 mesa libGL.so

使用 libgl1-dev,我可以编译与 gl 相关的软件。但是编译后,我可以看到使用了 nvidia libGL:

$ ldd mysoftware
libGL.so.1 => /usr/lib/nvidia-current/libGL.so.1 (0x00007f620d78c000)
Run Code Online (Sandbox Code Playgroud)

结论

  • 我们需要libgl1-mesa-dev才能默认编译gl相关的软件
  • 我们在编译时不使用 nvidia 标头,而是使用 mesa 标头
  • 我们在运行时不使用任何台面库

问题

  • 为什么我要安装 Mesa 开发,因为我的电脑上已经有了所有东西?
  • 如果没有安装 mesa,ubuntu 是否需要在标准位置安装或符号链接 nvidia 库和标头?