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.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With