Qt:找不到-lGL错误


109

我刚刚重新安装了QtCreator,创建了新项目(Qt Application),编译后得到了这个:

/usr/bin/ld: **cannot find -lGL**
collect2: error: ld returned 1 exit status
make: *** [untitled1] Error 1
18:07:41: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit)
When executing step 'Make'

项目为空,我没有提交任何更改


基于Qt 5.1.0(32位)
Ubuntu 13.04的Qt Creator 2.7.2

我该如何解决这个问题?


您安装了opengl吗?
lpapp 2013年


Answers:


157

您应该安装软件包“ libgl1-mesa-dev”:

sudo apt install libgl1-mesa-dev

6
这是正确的答案吗?为什么要链接到未使用的库?链接器标记不应该根本不包括-lGL吗?
卡杜

6
@Cuadue:错误和libgl1 -...中的GL用于OpenGL,它是Qt 5.x的基本依赖项。这是开发人员在设置Qt开发时的常见错误-但是一旦他们安装了OpenGL开发库,他们将再也看不到它。
pixelgrease

Ubuntu 20.04附带了必需的OpenGL库,无需安装任何软件包,您只需要使用ln它在/ usr / lib中创建链接,请参见destan的回答20.04软件包似乎没有任何用处。
jrh

74

您不需要安装任何东西。libGL已随Ubuntu一起安装,您只需对其进行软链接。(经过ubuntu 14.x和15.x的测试,可能适用于更高版本)

  1. 首先找到GL库
  2. 然后将其链接到/ usr / lib下
  3. 如果缺少该库,则可以通过libgl1-mesa-dev软件包进行安装

这是您可以执行的操作:

$ locate libGL
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/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/libGLEWmx.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
/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/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so

1
是的,这有效。ldconfig在这种情况下,处理共享库之后通常是一个好主意。
何塞托马斯腌肠

感谢你的回答!在我的系统上,由于Android SDK,Steam和其他应用程序,我有多个libGL。文件夹中也存在原始的台面文件i386-linux-gnu夹。对于阅读此答案的任何人,您都可以通过运行locate libGL | grep mesa然后sudo ln在正确的位置更改此答案中提到的最后一个命令来轻松地找到Ubuntu中默认安装的库。
阿卡什·阿加瓦尔

1
这在Ubuntu 16.10上对我有用,但是如果现在使用NVidia GPU进行OpenGL渲染或as / w渲染器,我感到困惑。
DavidJ

这个答案似乎并不能解决pkg-config问题,对吗?IE:如果您已设置qt构建行以使用pkg-config --libs,则此解决方案仍然不会为GL返回任何内容?为了安全起见,我只安装了mesa-dev。
Alex Summers

3
主席先生,
配上

3

默认情况下包括 gui Qt模块。如果您不想在项目中使用它(例如,它是一个库或仅使用stdio),则需要在.pro文件中进行指定。

QT -= gui

链接器将不会尝试查找lGL,无论是否已安装它。

我的情况确实有点奇怪,因为使用Qt的主要原因是创建gui。安装GL库当然并不难,我只是想知道为什么我又快又脏的Hello World想要它。


2

写:

yum provides */libGL.so 

提供后:

yum install mesa-libGL-devel mesa-libGLU-devel


1

我的系统是x86计算机上的Ubuntu 16.04(带有NVIDIA GeForce GPU)。

检查位于的库文件 /usr/lib/x86_64-linux-gnu

ls -al /usr/lib/x86_64-linux-gnu/libG*

如果看到断开的链接,请重新安装 libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

并且,重新检查库。


0

在我的情况下:我在Win10 64位中安装了QT 32位库,并且遇到了错误,我更改为所有64位,并且QT创建者运行顺利。


-1

一分钟前在suse中解决了这个问题。只需执行以下步骤,QTCreator就可以正常工作。

须藤zypper install --type pattern devel_basis

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.