GL/gl.h and GL library

  • Hello, I am trying to use the Qt Creator (qt 5.12.3 running on Linux CentOS 7) software to run some code and I get an error saying

    GL/gl.h: No such file or directory

    This happens even for the examples provided by Qt.

    Running the command

    locate GL/gl.h

    in terminal yields


    So the file seems to exist.

    I've tried to solve this by following various tutorials online. The instructions say to run the code

    sudo yum groupinstall "Development Tools"
    sudo yum install libGL-devel

    or other similar commands.
    When I run these in the terminal, I get the error

    One of the configured repositories failed (CentOS-7 - Media),
    and yum doesn't have enough cached data to continue. At this point the only
    safe thing yum can do is fail. There are a few ways to work "fix" this:
    1. Contact the upstream for the repository and get them to fix the problem.
    2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).
    3. Run the command with the repository temporarily disabled
    yum --disablerepo=c7-media ...
    4. Disable the repository permanently, so yum won't use it by default. Yum
    will then just ignore the repository until you permanently enable it
    again or use --enablerepo for temporary usage:
    yum-config-manager --disable c7-media
    subscription-manager repos --disable=c7-media
    5. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    yum-config-manager --save --setopt=c7-media.skip_if_unavailable=true
    failure: repodata/repomd.xml from c7-media: [Errno 256] No more mirrors to try.
    file:///media/CentOS/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /media/CentOS/repodata/repomd.xml"
    file:///media/cdrecorder/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /media/cdrecorder/repodata/repomd.xml"
    file:///media/cdrom/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /media/cdrom/repodata/repomd.xml"

    How do I fix this so that I can install the necessary libraries?

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Your issue comes from the CentOS package installer. You should check with their folks.

    You can also follow the log message you got when it failed.

  • I have solved the CentOS problem.

    Is there a way for me to re-install or verify the GL library because I am still getting the error

    GL/gl.h: No such file or directory

  • Lifetime Qt Champion

    Where is that file located on your system ?

  • [ugstudent@localhost ~]$ locate GL/gl.h

  • Lifetime Qt Champion

    So in fact, you did not install the OpenGL development package on your system, did you ?

  • I tried to verify OpenGL and got this

    [ugstudent@localhost ~]$ glxinfo | grep OpenGL
    OpenGL vendor string: VMware, Inc.
    OpenGL renderer string: llvmpipe (LLVM 7.0, 128 bits)
    OpenGL version string: 2.1 Mesa 18.3.4
    OpenGL shading language version string: 1.20
    OpenGL extensions:
    OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.3.4
    OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
    OpenGL ES profile extensions:

    If this is incorrect, how do I verify or install OpenGL?

  • Lifetime Qt Champion

    @ugstudent "OpenGL development package".
    Development packages usually have "-dev" package suffix, like somepackage-dev.rpm.
    Please check this:

    sudo yum groupinstall "C Development Tools and Libraries"
    sudo yum install mesa-libGL-devel

  • @ugstudent
    OpenGL is installed on all Linuxes. You have version 2.1 and the renderer (the guys you wrote the driver) is Mesa (the Mesa project).
    In other words, you can run programs that need OpenGL 2.1 and below.

    For programmers:
    In your case, you need to install the development package. I know that there are a few header files. gl.h which is the main one. glext.h if you want functions from GL 1.2 and above. glu.h (contains a few functions for rendering a sphere, cylinder and such and is very old).
    There is also a few OS specific functions. I think on Linux, it is the glx.h file that has those functions, such as for swapping the back buffer with the front buffer.
    There are also the project called the OpenGL wrangler (aka GLEW). This makes it easier to use GL 1.2 and above functions. What the GLEW library does is dynamically fetch addresses to GL functions.

    You just need to figure out how to install the GL development package for your CentOS and QTCreator.

  • I tried the two commands listed.


    sudo yum groupinstall "C Development Tools and Libraries"

    I get

    Warning: group C Development Tools and Libraries does not exist.
    Error: No packages in any requested group available to install or update

    and running

    sudo yum install mesa-libGL-devel

    I get

    Package mesa-libGL-devel-18.3.4-7.el7_8.1.x86_64 already installed and latest version
    Nothing to do

  • Lifetime Qt Champion

    @ugstudent Search for gl.h like this:

    find /usr -name gl.h

    Is it there?

  • I got it working. Thank you for all your help.

  • Lifetime Qt Champion

    Great !

    What did you do ?

  • I met this error on Windows, could you please share your experience on how to solve it?

Log in to reply