Qt: can't find -lGL error

101,566

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)

  1. First locate the GL library
  2. Then link it under /usr/lib
  3. 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
Share:
101,566

Related videos on Youtube

Hofmn
Author by

Hofmn

Updated on May 16, 2020

Comments

  • Hofmn
    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.04

    How do I solve this problem?

  • Cuadue
    Cuadue over 9 years
    How 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
    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
    José Tomás Tocino about 8 years
    Yep, this works. It's usually a good idea to run ldconfig after dealing with shared libraries like in this case.
  • Akash Agarwal
    Akash Agarwal about 8 years
    Thanks 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 running locate libGL | grep mesa and then alter the last sudo ln command mentioned in this answer with the right location.
  • DavidJ
    DavidJ over 7 years
    This 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
    Alex Summers about 7 years
    This 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
    codingbruh about 6 years
    You Sir, deserve the cookie not the con-man who was the big tick
  • PoundXI
    PoundXI about 5 years
    For 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
    mx1up almost 5 years
    linking the file did not solve the problem in my case, the compiler complained: /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-l‌​inux/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-l‌​inux/bin/ld: cannot find -lGL
  • RichArt
    RichArt over 4 years
    That 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
    jrh about 4 years
    Ubuntu 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
    iroiroys over 2 years
    I'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