Qt: can't find -lGL error
Solution 1
You should install package "libgl1-mesa-dev":
sudo apt install libgl1-mesa-dev
Solution 2
you don't need to install anything. libGL
is already installed with Ubuntu, you just need to soft link it. (tested for ubuntu 14.x and 15.x, might work for later versions)
- First locate the GL library
- Then link it under /usr/lib
- If the library is missing, it can be installed via libgl1-mesa-dev package
Here is how you could do this:
$ 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
Solution 3
The gui Qt module is included by default. If you don't want to use it in a project (e.g., it is a library or only uses stdio), you need to specify that in the .pro file.
QT -= gui
And the linker won't attempt to find lGL regardless of whether it is installed.
My case is admittedly a bit odd, since the main reason to use Qt is to create gui's. Installing the GL library is certainly not difficult, I just wanted to know why my quick and dirty Hello World wanted it.
Solution 4
write:
yum provides */libGL.so
after providing:
yum install mesa-libGL-devel mesa-libGLU-devel
Solution 5
This worked for me:
sudo ln -s /usr/lib/libEGL1.so /usr/lib/libGL.so
Related videos on Youtube
Hofmn
Updated on May 16, 2020Comments
-
Hofmn about 4 years
I just reinstalled QtCreator, created new project (Qt Application) an got this after compilation:
/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'
(Project is empty, I did'n commit any changes)
Qt Creator 2.7.2
Based on Qt 5.1.0 (32 bit)
Ubuntu 13.04How do I solve this problem?
-
László Papp almost 11 yearsdo you have opengl installed?
-
László Papp about 10 yearspossible duplicate of Android : error libGL.so: cannot open shared object file: No such file or directory
-
Admin over 8 yearsPossible duplicate of Qt Creator compiler issue on Debian
-
-
Cuadue over 9 yearsHow is this the correct answer? Why should you link against a library not being used? Shouldn't the linker flags simply not include
-lGL
? -
pixelgrease about 9 years@Cuadue: The GL in the error and in libgl1-... is for OpenGL, a fundamental dependency of Qt 5.x. This is a common error for devs when setting up for Qt development -- but once they install the OpenGL development lib they never see it again.
-
José Tomás Tocino about 8 yearsYep, this works. It's usually a good idea to run
ldconfig
after dealing with shared libraries like in this case. -
Akash Agarwal about 8 yearsThanks for the answer! On my system I had multiple libGL because of Android sdk, steam and other applications. The original mesa folder was also present in
i386-linux-gnu
folder. For anyone reading this answer, you can easily locate the default installed library in Ubuntu by runninglocate libGL | grep mesa
and then alter the lastsudo ln
command mentioned in this answer with the right location. -
DavidJ over 7 yearsThis worked for me on Ubuntu 16.10, but I'm confused if it is now using the NVidia GPU for OpenGL rendering, or a s/w renderer?
-
Alex Summers about 7 yearsThis answer doesn't seem to solve the pkg-config question, does it? IE: if you have qt build lines set up to use pkg-config --libs, this solution still won't return anything for GL? To be on the safe side, I simply installed the mesa-dev.
-
codingbruh about 6 yearsYou Sir, deserve the cookie not the con-man who was the big tick
-
PoundXI about 5 yearsFor me on Ubuntu 18.04 I link it on the same location using following command. sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0 /usr/lib/x86_64-linux-gnu/libGL.so
-
mx1up almost 5 yearslinking the file did not solve the problem in my case, the compiler complained:
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lGL
-
RichArt over 4 yearsThat worked for my on Ubuntu 18.04 and Qt 5.12.6.
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so
-
jrh about 4 yearsUbuntu 20.04 ships with the required OpenGL libraries, it's not necessary to install any packages, you just need to use
ln
to create a link in /usr/lib, see destan's answer, the 20.04 package doesn't seem to have anything useful in it. -
iroiroys over 2 yearsI'd like to recommend this solution. It worked with my Ubuntu 16.04 LTS and Qt 5.0.2 (5.15.2 based)
sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so