GCC / usr / bin / ld:找不到-lGl

时间:2016-05-06 20:57:24

标签: c++ ubuntu opengl gcc linker

我试图使用libGL和freeglut3编译c ++ openGL程序。我在尝试:

g++ main.cpp -w -lglut -lGl -o bin/app

g++ main.cpp -w -lglut -lGL -o bin/app

结果是:

/usr/bin/ld: cannot find -lGl
collect2: error: ld returned 1 exit status
Makefile:16: recipe for target 'all' failed
make: *** [all] Error 1

我在:

Ubuntu 16.04 LTS

GCC

gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2)

libGL.so

/usr/lib/x86_64-linux-gnu$ find libGL.so
libGL.so

我安装了:

freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev

我错过了什么吗?上次我成功编译时,我在ubuntu 14.04上。

我在某处读到了我应该安装fglrx-glx但该软件包不可用。

更新

glxinfo
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2) 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.2.0
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 11.2.0
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 11.2.0
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

我的ldconfig.real似乎是空的

2 个答案:

答案 0 :(得分:3)

  

Completed 200 OK in 2261ms (Views: 564.1ms | ActiveRecord: 40.7ms)

此命令不正确:您要链接g++ main.cpp -w -lglut -lGl -o bin/app,而不是libGL,因此命令应为:libGl

UNIX文件名区分大小写。

  

我肯定知道它的G1,但我尝试了-lGL并且它给出了同样的错误

知道错了。它应该是g++ main.cpp -w -lglut -lGL -o bin/app,并且-lGL中存在libGL.so无法你得到同样的错误(可能你会得到与{{{{1}不同的错误1}}(重要的)但来自/usr/lib/x86_64-linux-gnu的相同错误(这并不重要)。)

<强>更新

  

ld

确定。 必须make是一个悬空的符号链接,或指向一个32位的库,或者以某种其他方式损坏。

更新2:

/usr/bin/ld: cannot find -lGL

确实,这是一个破纪念的符号链接。要解决此问题,请重新安装提供它的软件包:

/usr/lib/x86_64-linux-gnu/libGL.so

答案 1 :(得分:1)

我遇到了同样的问题,我设法解决了它,我不知道以后会不会出现问题,但现在一切顺利。

/usr/lib/x86_64-linux-gnu 目录中,我检查了符号链接创建的文件,我看到在我的情况下没有 libGL.so。在你的情况下它甚至存在,你可以尝试删除它并再次创建符号链接。

我所做的是使用 libGL.so.1.7.0 创建符号链接(1.7.0 可以根据您机器上的版本进行更改)。

sudo ln -s libGL.so.1.7.0 libGL.so

我希望这个解决方案对某人有用,抱歉奇怪的英语。 ?

?