instalar how compiler c++ opengl glut glu

c++ - how - opengl compiler



Error con la compilaciĆ³n GLUT en ubuntu (6)

El enlazador GCC puede escanear bibliotecas en el orden en que se encuentran en la línea de comandos, lo que significa que puede escanear primero las bibliotecas y no ve a nadie usándolas y, por lo tanto, usted obtiene los errores. Para estar seguro, coloca las bibliotecas últimas en la línea de comando:

gcc hw_opengl.cpp -o hw_opengl -lGL -lGLU -lglut

Intento compilar una aplicación de exceso de "hello world":

#include <stdlib.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> GLint Width = 512, Height = 512; const int CubeSize = 200; void Display(void) { int left, right, top, bottom; left = (Width - CubeSize) / 2; right = left + CubeSize; bottom = (Height - CubeSize) / 2; top = bottom + CubeSize; glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); glColor3ub(255,0,0); glBegin(GL_QUADS); glVertex2f(left,bottom); glVertex2f(left,top); glVertex2f(right,top); glVertex2f(right,bottom); glEnd(); glFinish(); } void Reshape(GLint w, GLint h) { Width = w; Height = h; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, w, 0, h, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void Keyboard(unsigned char key, int x, int y) { #define ESCAPE ''/033'' if( key == ESCAPE ) exit(0); } main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB); glutInitWindowSize(Width, Height); glutCreateWindow("Red square example"); glutDisplayFunc(Display); glutReshapeFunc(Reshape); glutKeyboardFunc(Keyboard); glutMainLoop(); }

El comando de compilación es:

gcc -lGL -lGLU hw_opengl.cpp -o hw_opengl

Tengo los siguientes errores:

/tmp/ccbnBFHC.o: In function `Display()'': hw_opengl.cpp:(.text+0x6c): undefined reference to `glClearColor'' hw_opengl.cpp:(.text+0x78): undefined reference to `glClear'' hw_opengl.cpp:(.text+0x94): undefined reference to `glColor3ub'' hw_opengl.cpp:(.text+0xa0): undefined reference to `glBegin'' hw_opengl.cpp:(.text+0xb4): undefined reference to `glVertex2f'' hw_opengl.cpp:(.text+0xc8): undefined reference to `glVertex2f'' hw_opengl.cpp:(.text+0xdc): undefined reference to `glVertex2f'' hw_opengl.cpp:(.text+0xf0): undefined reference to `glVertex2f'' hw_opengl.cpp:(.text+0xf5): undefined reference to `glEnd'' hw_opengl.cpp:(.text+0xfa): undefined reference to `glFinish'' /tmp/ccbnBFHC.o: In function `Reshape(int, int)'': hw_opengl.cpp:(.text+0x134): undefined reference to `glViewport'' hw_opengl.cpp:(.text+0x140): undefined reference to `glMatrixMode'' hw_opengl.cpp:(.text+0x145): undefined reference to `glLoadIdentity'' hw_opengl.cpp:(.text+0x173): undefined reference to `glOrtho'' hw_opengl.cpp:(.text+0x17f): undefined reference to `glMatrixMode'' hw_opengl.cpp:(.text+0x184): undefined reference to `glLoadIdentity'' /tmp/ccbnBFHC.o: In function `main'': hw_opengl.cpp:(.text+0x1c1): undefined reference to `glutInit'' hw_opengl.cpp:(.text+0x1cd): undefined reference to `glutInitDisplayMode'' hw_opengl.cpp:(.text+0x1e4): undefined reference to `glutInitWindowSize'' hw_opengl.cpp:(.text+0x1f0): undefined reference to `glutCreateWindow'' hw_opengl.cpp:(.text+0x1fc): undefined reference to `glutDisplayFunc'' hw_opengl.cpp:(.text+0x208): undefined reference to `glutReshapeFunc'' hw_opengl.cpp:(.text+0x214): undefined reference to `glutKeyboardFunc'' hw_opengl.cpp:(.text+0x219): undefined reference to `glutMainLoop'' collect2: ld returned 1 exit status

He instalado GLUT: sudo apt-get install freeglut3 freeglut3-dev

Hay en / usr / lib: libglut.a
libglut.so
libglut.so.3
libglut.so.3.9.0

locate glu.h /home/goran/QtSDK/QtSources/4.8.0/src/3rdparty/webkit/Source/ThirdParty/glu/internal_glu.h /usr/include/GL/glu.h /usr/include/GL/gl.h locate gl.h ... /usr/include/GL/gl.h

¿Qué hago incorrectamente?


Esto se debe a que xlibmesa-gl-dev y xlibmesa-glu-dev no hacen un enlace suave al archivo libGL.so y libGLU.so, por lo que ld no puede encontrarlos para enlazar con su código.


Te estás perdiendo -lglut .

El comando de compilación correcto es gcc -lGL -lglut -lGLU hw_opengl.cpp -o hw_opengl


Compruebe si instaló binutils-gold (Gold linker) o no, instálelo y, si ya lo hizo, extráigalo e intente en la terminal.

g++ sourcefile.cpp -lglut


g++ -lglut -lGLU -lGL helloWorld.cpp -o helloWorld

g++ , no gcc , para cpp


g++ filename.cpp -lGL -lglut -o exfilename

y entonces

./exfilename