Compiling and Runnin Opengl (Glut) Program in Ubuntu 10.10 [Duplicate]
I Wrote This Code: #Include #Include #Include #Include #Include Void Init() { glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION)...
I wrote this code:
#include <stdio.h>
#include <stdlib.h>
#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glut.h>
void init()
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);
}
void lineSegment()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glBegin(GL_TRIANGLES);
glVertex2i(40,120);
glVertex2i(40,20);
glVertex2i(80,20);
glEnd();
glFlush();
}
int main()
{
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(400,300);
glutCreateWindow("An Example OpenGL....");
init();
glutDisplayFunc(lineSegment);
glutMainLoop();
return 0;
}
and this is my error.
funfullson@funfullson:~$ gcc gl.cpp
/tmp/cchfRGT2.o: In function `init()':
gl.cpp:(.text+0x2a): undefined reference to `glClearColor'
gl.cpp:(.text+0x36): undefined reference to `glMatrixMode'
gl.cpp:(.text+0x5a): undefined reference to `gluOrtho2D'
/tmp/cchfRGT2.o: In function `lineSegment()':
gl.cpp:(.text+0x6e): undefined reference to `glClear'
gl.cpp:(.text+0x8d): undefined reference to `glColor3f'
gl.cpp:(.text+0x99): undefined reference to `glBegin'
gl.cpp:(.text+0xad): undefined reference to `glVertex2i'
gl.cpp:(.text+0xc1): undefined reference to `glVertex2i'
gl.cpp:(.text+0xd5): undefined reference to `glVertex2i'
gl.cpp:(.text+0xda): undefined reference to `glEnd'
gl.cpp:(.text+0xdf): undefined reference to `glFlush'
/tmp/cchfRGT2.o: In function `main':
gl.cpp:(.text+0xf6): undefined reference to `glutInitDisplayMode'
gl.cpp:(.text+0x10a): undefined reference to `glutInitWindowPosition'
gl.cpp:(.text+0x11e): undefined reference to `glutInitWindowSize'
gl.cpp:(.text+0x12a): undefined reference to `glutCreateWindow'
gl.cpp:(.text+0x13b): undefined reference to `glutDisplayFunc'
gl.cpp:(.text+0x140): undefined reference to `glutMainLoop'
/tmp/cchfRGT2.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
I dont know what I have to do.please learn me how to do it.
First, you should use g++ to compile C++ code, not gcc.
Then, you have to link to the OpenGL libraries when building your program:
$ g++ gl.cpp -o gl -lGL -lGLU -lglut
The command line above will produce an executable file called gl in the current directory. Without -o, the resulting executable is called a.out (on my platform), which is probably not what you want.
(Note that according to cipher's comment below, source files have to precede library options in order for g++ to compile them.)
You will have to place the file in front of any -l options , here for an example:
g++ X.cpp -lX11 -lGL -lGLU -lglut -g -Wall -O2 -o X
Also make sure the following packages is already present:
sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev
And ensure glx module is loaded in Xorg
Section "Module"
Load "glx"
EndSection
Good luck with OpenGL programming !
For Compilation
g++ filename.cpp -lGL -lGLU -lglut
For Execution
./a.out