【问题标题】:Trying to link library to a file which uses OpenGL and linker not being able to find GL relevant file试图将库链接到使用 OpenGL 和链接器的文件无法找到 GL 相关文件
【发布时间】:2015-06-05 20:37:28
【问题描述】:

所以这是我运行时的输出

$ g++ main.c -lGL 
 /usr/bin/ld: cannot find -lGL
 collect2: error: ld returned 1 exit status

但是我确实安装了 GL,因为它附带了我从 nvidia 网站下载的显卡驱动程序,即用于我的显卡 780ti 的 346.72

当我进行搜索时,即在此处定位 GL 是响应的一部分

...
/usr/include/GL
/usr/include/GL/freeglut.h
/usr/include/GL/freeglut_ext.h
/usr/include/GL/freeglut_std.h
/usr/include/GL/gl.h
/usr/include/GL/gl_mangle.h
/usr/include/GL/glcorearb.h
/usr/include/GL/glew.h
/usr/include/GL/glext.h
/usr/include/GL/glu.h
/usr/include/GL/glu_mangle.h
/usr/include/GL/glut.h
/usr/include/GL/glx.h
/usr/include/GL/glx_mangle.h
/usr/include/GL/glxew.h
/usr/include/GL/glxext.h
/usr/include/GL/glxint.h
/usr/include/GL/glxmd.h
/usr/include/GL/glxproto.h
/usr/include/GL/glxtokens.h
/usr/include/GL/internal
/usr/include/GL/wglew.h
/usr/include/GL/internal/dri_interface.h
/usr/include/GL/internal/glcore.h
...
/usr/lib/x86_64-linux-gnu/libEGL.so
/usr/lib/x86_64-linux-gnu/libEGL.so.1
/usr/lib/x86_64-linux-gnu/libEGL.so.346.72
/usr/lib/x86_64-linux-gnu/libGL.la
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so.346.72
/usr/lib/x86_64-linux-gnu/libGLESv1_CM.so
/usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1
/usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.346.72
/usr/lib/x86_64-linux-gnu/libGLESv2.so
/usr/lib/x86_64-linux-gnu/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/libGLESv2.so.346.72
/usr/lib/x86_64-linux-gnu/libGLEW.so
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLU.a
/usr/lib/x86_64-linux-gnu/libGLU.so
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5
/usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5.2
/usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5.2.1
/usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4
/usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4.8
/usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4.8.6
/usr/lib/x86_64-linux-gnu/mesa/libGL.so
....

这表明它确实存在

如何将它与链接器链接?

【问题讨论】:

  • include 文件夹仅包含头文件,而不包含(静态/共享)库,这是您解决此错误所需要的。尝试将库路径设置到包含 OpenGL 库的文件夹(可能是 /usr/libs/GL)。
  • @hop joppe5 请在您的问题中添加您使用$ g++ main.c -L/usr/lib/x86_64-linux-gnu -lGL 的信息。我已经删除了我的答案。

标签: c++ linux opengl


【解决方案1】:

规范的方法是将包含架构平台特定库的目录添加到系统链接器路径中,例如/usr/lib/x86_64-linux-gnu/。为此,请将其添加到 /etc/ld.so.conf 并重建链接器缓存。通过以超级用户权限执行ldconfig 来重建链接器缓存。

【讨论】:

  • 我已经解决了这个问题,我通过单独删除清除了所有其他 xorg 和 nvidia 驱动程序,包括 nouveau 以及这个 sudo apt-get purge nvidia* 我也在安装后运行 nvidia-xconfig 并且我做了从恢复外壳位置安装
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 2014-09-06
  • 1970-01-01
相关资源
最近更新 更多