【问题标题】:GCC /usr/bin/ld: cannot find -lGlGCC /usr/bin/ld: 找不到 -lGl
【发布时间】:2016-05-06 20:57:23
【问题描述】:

我正在尝试使用 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 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 似乎是空的

【问题讨论】:

  • Linux 文件系统区分大小写,GL != GL。
  • 我肯定知道它的 Gl,但我尝试了 -lGL,它给出了同样的错误
  • 不,肯定不是 Gl。您自己的帖子表明它被称为libGL.so,而且一直都是这样。
  • @Nick 尝试像这样为 gcc 添加-L g++ main.cpp -w -lglut -L/usr/lib/x86_64-linux-gnu -lGL -o bin/app
  • @Ivan 谢谢 :) 试过了,可悲的是还是同样的错误

标签: c++ ubuntu opengl gcc linker


【解决方案1】:

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

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

UNIX 文件名区分大小写。

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

知道错了。它应该是-lGL,并且libGL.so 出现在/usr/lib/x86_64-linux-gnu 中,不可能你得到同样的错误(可能你得到一个与ld 不同的错误(这很重要)但是来自make 的相同错误(没关系))。

更新:

/usr/bin/ld: cannot find -lGL

好的。 必须/usr/lib/x86_64-linux-gnu/libGL.so 要么是一个悬空符号链接,要么指向 32 位库,要么以其他方式损坏。

更新 2:

 /usr/lib/x86_64-linux-gnu/libGL.so: broken symbolic link to /usr/lib/libGL.so.1.2 2

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

sudo apt-get install --reinstall libgl1-mesa-dev

【讨论】:

  • /usr/bin/ld: 找不到 -lGL collect2: 错误: ld 返回 1 个退出状态 Makefile:16: 目标“所有”的配方失败 make: *** [all] 错误 1
  • @Nick file /usr/lib/x86_64-linux-gnu/libGL.sofile -L /usr/lib/x86_64-linux-gnu/libGL.so 的输出是什么?
  • hmmm... 第一次:/usr/lib/x86_64-linux-gnu/libGL.so:到 /usr/lib/libGL.so.1.2 的符号链接损坏第二次:/usr/lib/ x86_64-linux-gnu/libGL.so: cannot open `/usr/lib/x86_64-linux-gnu/libGL.so' (No such file or directory) 我想你可能已经找到了我的问题
  • @Nick “我想你可能发现了我的问题”——你有我的疑问吗?答案已更新。
  • 毫无疑问... :P 只是在寻找解决方法
【解决方案2】:

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

/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

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

?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2018-01-15
    • 2012-12-13
    • 1970-01-01
    • 2013-02-08
    • 2021-05-07
    • 2013-01-03
    相关资源
    最近更新 更多