How to Setup OpenGL with gcc Compiler in Linux (Red Hat)

Step1: Your Machine should be connected with Internet, If its not then use below VMware configuration:

Vmware tool configuration:

Network Configuration in Machin:






Step2: Open you terminal prompt with root and execute below commands:

[root@OLE2 ~]# yum search freeglut
Loaded plugins: refresh-packagekit, security
========================================== N/S Matched: freeglut ===========================================
freeglut-devel.i686 : Freeglut developmental libraries and header files
freeglut.i686 : A freely licensed alternative to the GLUT library

  Name and summary matches only, use "search all" for everything.
[root@OLE2 ~]#
[root@OLE2 ~]# yum install freeglut-devel.i686
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package freeglut-devel.i686 0:2.6.0-1.el6 will be installed
--> Processing Dependency: freeglut = 2.6.0-1.el6 for package: freeglut-devel-2.6.0-1.el6.i686
--> Processing Dependency: libglut.so.3 for package: freeglut-devel-2.6.0-1.el6.i686
--> Processing Dependency: libGL-devel for package: freeglut-devel-2.6.0-1.el6.i686
--> Processing Dependency: libGLU-devel for package: freeglut-devel-2.6.0-1.el6.i686
--> Running transaction check
---> Package freeglut.i686 0:2.6.0-1.el6 will be installed
---> Package mesa-libGL-devel.i686 0:11.0.7-4.el6 will be installed
--> Processing Dependency: mesa-libGL = 11.0.7-4.el6 for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(xcb-dri2) >= 1.8 for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(xcb-glx) >= 1.8.1 for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(libdrm) >= 2.4.60 for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(xfixes) for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(xxf86vm) for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: libX11-devel for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(xcb) for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(xdamage) for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(x11-xcb) for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(x11) for package: mesa-libGL-devel-11.0.7-4.el6.i686
--> Processing Dependency: pkgconfig(xext) for package: mesa-libGL-devel-11.0.7-4.el6.i686
---> Package mesa-libGLU-devel.i686 0:11.0.7-4.el6 will be installed
--> Processing Dependency: mesa-libGLU = 11.0.7-4.el6 for package: mesa-libGLU-devel-11.0.7-4.el6.i686
--> Running transaction check
---> Package libX11-devel.i686 0:1.6.3-2.el6 will be installed
--> Processing Dependency: libX11 = 1.6.3-2.el6 for package: libX11-devel-1.6.3-2.el6.i686
--> Processing Dependency: pkgconfig(xproto) for package: libX11-devel-1.6.3-2.el6.i686
--> Processing Dependency: pkgconfig(kbproto) for package: libX11-devel-1.6.3-2.el6.i686
---> Package libXdamage-devel.i686 0:1.1.3-4.el6 will be installed
---> Package libXext-devel.i686 0:1.3.3-1.el6 will be installed
--> Processing Dependency: libXext = 1.3.3-1.el6 for package: libXext-devel-1.3.3-1.el6.i686
---> Package libXfixes-devel.i686 0:5.0.1-2.1.el6 will be installed
--> Processing Dependency: libXfixes = 5.0.1-2.1.el6 for package: libXfixes-devel-5.0.1-2.1.el6.i686
---> Package libXxf86vm-devel.i686 0:1.1.3-2.1.el6 will be installed
--> Processing Dependency: libXxf86vm = 1.1.3-2.1.el6 for package: libXxf86vm-devel-1.1.3-2.1.el6.i686
---> Package libdrm-devel.i686 0:2.4.65-2.el6 will be installed
--> Processing Dependency: libdrm = 2.4.65-2.el6 for package: libdrm-devel-2.4.65-2.el6.i686
--> Processing Dependency: libdrm_amdgpu.so.1 for package: libdrm-devel-2.4.65-2.el6.i686
---> Package libxcb-devel.i686 0:1.11-2.el6 will be installed
--> Processing Dependency: libxcb = 1.11-2.el6 for package: libxcb-devel-1.11-2.el6.i686
--> Processing Dependency: pkgconfig(xau) >= 0.99.2 for package: libxcb-devel-1.11-2.el6.i686
--> Processing Dependency: libxcb-xkb.so.1 for package: libxcb-devel-1.11-2.el6.i686
--> Processing Dependency: libxcb-present.so.0 for package: libxcb-devel-1.11-2.el6.i686
--> Processing Dependency: libxcb-dri3.so.0 for package: libxcb-devel-1.11-2.el6.i686
--> Processing Dependency: libxcb-sync.so.1 for package: libxcb-devel-1.11-2.el6.i686
---> Package mesa-libGL.i686 0:9.0-0.7.el6 will be updated
---> Package mesa-libGL.i686 0:11.0.7-4.el6 will be an update
--> Processing Dependency: mesa-dri-drivers(x86-32) = 11.0.7-4.el6 for package: mesa-libGL-11.0.7-4.el6.i686
---> Package mesa-libGLU.i686 0:9.0-0.7.el6 will be updated
---> Package mesa-libGLU.i686 0:11.0.7-4.el6 will be an update
--> Running transaction check
---> Package libX11.i686 0:1.5.0-4.el6 will be updated
---> Package libX11.i686 0:1.6.3-2.el6 will be an update
--> Processing Dependency: libX11-common = 1.6.3-2.el6 for package: libX11-1.6.3-2.el6.i686
---> Package libXau-devel.i686 0:1.0.6-4.el6 will be installed
---> Package libXext.i686 0:1.3.1-2.el6 will be updated
---> Package libXext.i686 0:1.3.3-1.el6 will be an update
---> Package libXfixes.i686 0:5.0-3.el6 will be updated
---> Package libXfixes.i686 0:5.0.1-2.1.el6 will be an update
---> Package libXxf86vm.i686 0:1.1.2-2.el6 will be updated
---> Package libXxf86vm.i686 0:1.1.3-2.1.el6 will be an update
---> Package libdrm.i686 0:2.4.39-1.el6 will be updated
---> Package libdrm.i686 0:2.4.65-2.el6 will be an update
---> Package libxcb.i686 0:1.8.1-1.el6 will be updated
---> Package libxcb.i686 0:1.11-2.el6 will be an update
---> Package mesa-dri-drivers.i686 0:9.0-0.7.el6 will be updated
---> Package mesa-dri-drivers.i686 0:11.0.7-4.el6 will be an update
--> Processing Dependency: libLLVM-3.6-mesa.so for package: mesa-dri-drivers-11.0.7-4.el6.i686
--> Processing Dependency: libLLVM-3.6-mesa.so(libLLVM-3.6-mesa.so) for package: mesa-dri-drivers-11.0.7-4.el6.i686
---> Package xorg-x11-proto-devel.noarch 0:7.7-13.el6 will be installed
--> Running transaction check
---> Package libX11-common.noarch 0:1.5.0-4.el6 will be updated
---> Package libX11-common.noarch 0:1.6.3-2.el6 will be an update
---> Package mesa-private-llvm.i686 0:3.6.2-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================
 Package                          Arch               Version                   Repository              Size
============================================================================================================
Installing:
 freeglut-devel                   i686               2.6.0-1.el6               ol6_latest             111 k
Installing for dependencies:
 freeglut                         i686               2.6.0-1.el6               ol6_latest             166 k
 libX11-devel                     i686               1.6.3-2.el6               ol6_latest             983 k
 libXau-devel                     i686               1.0.6-4.el6               ol6_latest              13 k
 libXdamage-devel                 i686               1.1.3-4.el6               ol6_latest             8.8 k
 libXext-devel                    i686               1.3.3-1.el6               ol6_latest              74 k
 libXfixes-devel                  i686               5.0.1-2.1.el6             ol6_latest              12 k
 libXxf86vm-devel                 i686               1.1.3-2.1.el6             ol6_latest              18 k
 libdrm-devel                     i686               2.4.65-2.el6              ol6_latest             102 k
 libxcb-devel                     i686               1.11-2.el6                ol6_latest             1.1 M
 mesa-libGL-devel                 i686               11.0.7-4.el6              ol6_latest             499 k
 mesa-libGLU-devel                i686               11.0.7-4.el6              ol6_latest              83 k
 mesa-private-llvm                i686               3.6.2-1.el6               ol6_latest             6.8 M
 xorg-x11-proto-devel             noarch             7.7-13.el6                ol6_latest             286 k
Updating for dependencies:
 libX11                           i686               1.6.3-2.el6               ol6_latest             593 k
 libX11-common                    noarch             1.6.3-2.el6               ol6_latest             169 k
 libXext                          i686               1.3.3-1.el6               ol6_latest              34 k
 libXfixes                        i686               5.0.1-2.1.el6             ol6_latest              16 k
 libXxf86vm                       i686               1.1.3-2.1.el6             ol6_latest              16 k
 libdrm                           i686               2.4.65-2.el6              ol6_latest             139 k
 libxcb                           i686               1.11-2.el6                ol6_latest             149 k
 mesa-dri-drivers                 i686               11.0.7-4.el6              ol6_latest             4.1 M
 mesa-libGL                       i686               11.0.7-4.el6              ol6_latest             158 k
 mesa-libGLU                      i686               11.0.7-4.el6              ol6_latest             195 k

Transaction Summary
============================================================================================================
Install      14 Package(s)
Upgrade      10 Package(s)

Total size: 16 M
Total download size: 16 M
Is this ok [y/N]: y
Downloading Packages:
(1/22): freeglut-2.6.0-1.el6.i686.rpm                                                | 166 kB     00:00    
(2/22): freeglut-devel-2.6.0-1.el6.i686.rpm                                          | 111 kB     00:00     
(3/22): libX11-1.6.3-2.el6.i686.rpm                                                  | 593 kB     00:00    
(4/22): libX11-common-1.6.3-2.el6.noarch.rpm                                         | 169 kB     00:00    
(5/22): libX11-devel-1.6.3-2.el6.i686.rpm                                            | 983 kB     00:00    
(6/22): libXau-devel-1.0.6-4.el6.i686.rpm                                            |  13 kB     00:00    
(7/22): libXdamage-devel-1.1.3-4.el6.i686.rpm                                        | 8.8 kB     00:00    
(8/22): libXext-1.3.3-1.el6.i686.rpm                                                 |  34 kB     00:00    
(9/22): libXext-devel-1.3.3-1.el6.i686.rpm                                           |  74 kB     00:00    
(10/22): libXfixes-devel-5.0.1-2.1.el6.i686.rpm                                      |  12 kB     00:00    
(11/22): libXxf86vm-devel-1.1.3-2.1.el6.i686.rpm                                     |  18 kB     00:00    
(12/22): libdrm-2.4.65-2.el6.i686.rpm                                                | 139 kB     00:00    
(13/22): libdrm-devel-2.4.65-2.el6.i686.rpm                                          | 102 kB     00:00    
(14/22): libxcb-1.11-2.el6.i686.rpm                                                  | 149 kB     00:00    
(15/22): libxcb-devel-1.11-2.el6.i686.rpm                                            | 1.1 MB     00:00    
(16/22): mesa-dri-drivers-11.0.7-4.el6.i686.rpm                                      | 4.1 MB     00:00    
(17/22): mesa-libGL-11.0.7-4.el6.i686.rpm                                            | 158 kB     00:00    
(18/22): mesa-libGL-devel-11.0.7-4.el6.i686.rpm                                      | 499 kB     00:00    
(19/22): mesa-libGLU-11.0.7-4.el6.i686.rpm                                           | 195 kB     00:00    
(20/22): mesa-libGLU-devel-11.0.7-4.el6.i686.rpm                                     |  83 kB     00:00    
(21/22): mesa-private-llvm-3.6.2-1.el6.i686.rpm                                      | 6.8 MB     00:01    
(22/22): xorg-x11-proto-devel-7.7-13.el6.noarch.rpm                                  | 286 kB     00:00    
------------------------------------------------------------------------------------------------------------
Total                                                                       4.2 MB/s |  16 MB     00:03    
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : xorg-x11-proto-devel-7.7-13.el6.noarch                                                  1/34
  Updating   : libdrm-2.4.65-2.el6.i686                                                                2/34
  Updating   : libxcb-1.11-2.el6.i686                                                                  3/34
  Installing : libdrm-devel-2.4.65-2.el6.i686                                                          4/34
  Installing : libXau-devel-1.0.6-4.el6.i686                                                           5/34
  Installing : libxcb-devel-1.11-2.el6.i686                                                            6/34
  Updating   : libX11-common-1.6.3-2.el6.noarch                                                        7/34
  Updating   : libX11-1.6.3-2.el6.i686                                                                 8/34
  Installing : libX11-devel-1.6.3-2.el6.i686                                                           9/34
  Updating   : libXext-1.3.3-1.el6.i686                                                               10/34
  Installing : libXext-devel-1.3.3-1.el6.i686                                                         11/34
  Updating   : libXxf86vm-1.1.3-2.1.el6.i686                                                          12/34
  Updating   : libXfixes-5.0.1-2.1.el6.i686                                                           13/34
  Installing : libXfixes-devel-5.0.1-2.1.el6.i686                                                     14/34
  Installing : libXdamage-devel-1.1.3-4.el6.i686                                                      15/34
  Installing : libXxf86vm-devel-1.1.3-2.1.el6.i686                                                    16/34
  Installing : mesa-private-llvm-3.6.2-1.el6.i686                                                     17/34
  Updating   : mesa-dri-drivers-11.0.7-4.el6.i686                                                     18/34
  Updating   : mesa-libGL-11.0.7-4.el6.i686                                                           19/34
  Installing : mesa-libGL-devel-11.0.7-4.el6.i686                                                     20/34
  Updating   : mesa-libGLU-11.0.7-4.el6.i686                                                          21/34
  Installing : mesa-libGLU-devel-11.0.7-4.el6.i686                                                    22/34
  Installing : freeglut-2.6.0-1.el6.i686                                                              23/34
  Installing : freeglut-devel-2.6.0-1.el6.i686                                                        24/34
  Cleanup    : mesa-libGLU-9.0-0.7.el6.i686                                                           25/34
  Cleanup    : mesa-libGL-9.0-0.7.el6.i686                                                            26/34
  Cleanup    : libXxf86vm-1.1.2-2.el6.i686                                                            27/34
  Cleanup    : libXext-1.3.1-2.el6.i686                                                               28/34
  Cleanup    : libXfixes-5.0-3.el6.i686                                                               29/34
  Cleanup    : libX11-1.5.0-4.el6.i686                                                                30/34
  Cleanup    : mesa-dri-drivers-9.0-0.7.el6.i686                                                      31/34
  Cleanup    : libdrm-2.4.39-1.el6.i686                                                               32/34
  Cleanup    : libX11-common-1.5.0-4.el6.noarch                                                       33/34
  Cleanup    : libxcb-1.8.1-1.el6.i686                                                                34/34
  Verifying  : mesa-libGL-devel-11.0.7-4.el6.i686                                                      1/34
  Verifying  : libdrm-devel-2.4.65-2.el6.i686                                                          2/34
  Verifying  : libX11-devel-1.6.3-2.el6.i686                                                           3/34
  Verifying  : libXxf86vm-1.1.3-2.1.el6.i686                                                           4/34
  Verifying  : libXxf86vm-devel-1.1.3-2.1.el6.i686                                                     5/34
  Verifying  : libXext-1.3.3-1.el6.i686                                                                6/34
  Verifying  : freeglut-devel-2.6.0-1.el6.i686                                                         7/34
  Verifying  : libX11-1.6.3-2.el6.i686                                                                 8/34
  Verifying  : libXau-devel-1.0.6-4.el6.i686                                                           9/34
  Verifying  : mesa-libGLU-11.0.7-4.el6.i686                                                          10/34
  Verifying  : libxcb-1.11-2.el6.i686                                                                 11/34
  Verifying  : mesa-libGL-11.0.7-4.el6.i686                                                           12/34
  Verifying  : freeglut-2.6.0-1.el6.i686                                                              13/34
  Verifying  : libXdamage-devel-1.1.3-4.el6.i686                                                      14/34
  Verifying  : mesa-private-llvm-3.6.2-1.el6.i686                                                     15/34
  Verifying  : mesa-dri-drivers-11.0.7-4.el6.i686                                                     16/34
  Verifying  : libXfixes-devel-5.0.1-2.1.el6.i686                                                     17/34
  Verifying  : mesa-libGLU-devel-11.0.7-4.el6.i686                                                    18/34
  Verifying  : libXfixes-5.0.1-2.1.el6.i686                                                           19/34
  Verifying  : libXext-devel-1.3.3-1.el6.i686                                                         20/34
  Verifying  : xorg-x11-proto-devel-7.7-13.el6.noarch                                                 21/34
  Verifying  : libxcb-devel-1.11-2.el6.i686                                                           22/34
  Verifying  : libX11-common-1.6.3-2.el6.noarch                                                       23/34
  Verifying  : libdrm-2.4.65-2.el6.i686                                                               24/34
  Verifying  : libxcb-1.8.1-1.el6.i686                                                                25/34
  Verifying  : mesa-libGLU-9.0-0.7.el6.i686                                                           26/34
  Verifying  : libXxf86vm-1.1.2-2.el6.i686                                                            27/34
  Verifying  : libdrm-2.4.39-1.el6.i686                                                               28/34
  Verifying  : libXfixes-5.0-3.el6.i686                                                               29/34
  Verifying  : libX11-common-1.5.0-4.el6.noarch                                                       30/34
  Verifying  : mesa-dri-drivers-9.0-0.7.el6.i686                                                      31/34
  Verifying  : libX11-1.5.0-4.el6.i686                                                                32/34
  Verifying  : libXext-1.3.1-2.el6.i686                                                               33/34
  Verifying  : mesa-libGL-9.0-0.7.el6.i686                                                            34/34

Installed:
  freeglut-devel.i686 0:2.6.0-1.el6                                                                         

Dependency Installed:
  freeglut.i686 0:2.6.0-1.el6                            libX11-devel.i686 0:1.6.3-2.el6                  
  libXau-devel.i686 0:1.0.6-4.el6                        libXdamage-devel.i686 0:1.1.3-4.el6              
  libXext-devel.i686 0:1.3.3-1.el6                       libXfixes-devel.i686 0:5.0.1-2.1.el6             
  libXxf86vm-devel.i686 0:1.1.3-2.1.el6                  libdrm-devel.i686 0:2.4.65-2.el6                 
  libxcb-devel.i686 0:1.11-2.el6                         mesa-libGL-devel.i686 0:11.0.7-4.el6             
  mesa-libGLU-devel.i686 0:11.0.7-4.el6                  mesa-private-llvm.i686 0:3.6.2-1.el6             
  xorg-x11-proto-devel.noarch 0:7.7-13.el6             

Dependency Updated:
  libX11.i686 0:1.6.3-2.el6         libX11-common.noarch 0:1.6.3-2.el6     libXext.i686 0:1.3.3-1.el6     
  libXfixes.i686 0:5.0.1-2.1.el6    libXxf86vm.i686 0:1.1.3-2.1.el6        libdrm.i686 0:2.4.65-2.el6     
  libxcb.i686 0:1.11-2.el6          mesa-dri-drivers.i686 0:11.0.7-4.el6   mesa-libGL.i686 0:11.0.7-4.el6 
  mesa-libGLU.i686 0:11.0.7-4.el6 

Complete!
[root@OLE2 ~]#

In case if you have seen error messages related to .rpm file not found something like, then copy that link in Linux web-browser  to download rpm file and install with rpm tool or just click on that package.


Step3: Write a OpenGL Program

[root@OLE2 ~]# startx
xauth:  creating new authority file /root/.serverauth.21332


Fatal server error:
Server is already active for display 0
          If this server is no longer running, remove /tmp/.X0-lock
          and start again.

(EE)
Please consult the Red Hat, Inc. support
           at https://www.redhat.com/apps/support/
 for help.
(EE)


Step 3: OpenGL Example to execute c program

[root@OLE2 ~]#
[root@OLE2 ~]# vi tri.c
// Programmer: Mihalis Tsoukalos
// Date: Wednesday 04 June 2014
//
// A simple OpenGL program that draws a triangle.

#include "GL/freeglut.h"
#include "GL/gl.h"

void drawTriangle()
{
    glClearColor(0.4, 0.4, 0.4, 0.4);
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(1.0, 1.0, 1.0);
    glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);

        glBegin(GL_TRIANGLES);
                glVertex3f(-0.7, 0.7, 0);
                glVertex3f(0.7, 0.7, 0);
                glVertex3f(0, -1, 0);
        glEnd();

    glFlush();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("OpenGL - Creating a triangle");
    glutDisplayFunc(drawTriangle);
    glutMainLoop();
    return 0;
}

[root@OLE2 ~]#
[root@OLE2 ~]# gcc tri.c -lglut -o tr
[root@OLE2 ~]# ./tr





Read about Basics of OpenGL from the links:




Comments