2010-08-13 14 views
10

Estoy tratando de construir una aplicación OpenGL muy simple en Ubuntu 10.04 (tengo un sistema de 32 bits).g ++ linker: /usr/lib/libGL.so.1: no se pudo leer símbolos: operación no válida

Cuando estoy tratando de compilar el archivo, me sale el mensaje de error:

g++ -L/usr/lib simple.cpp -lglut 
/usr/bin/ld: /tmp/ccoPczAo.o: undefined reference to symbol 'glEnd' 
/usr/bin/ld: note: 'glEnd' is defined in DSO //usr/lib/libGL.so.1 so try adding it to the linker command line 
//usr/lib/libGL.so.1: could not read symbols: Invalid operation 
collect2: ld returned 1 exit status 

¿Alguien sabe lo que estoy haciendo mal?

+0

En realidad, no relacionada con su pregunta, pero veo que está utilizando glEnd(), que está en desuso desde la GL-3. Si está comenzando la programación de OpenGL, le sugiero que empiece a usar GL3 + con el "perfil central". Old OpenGL no solo es lento, sino también muy limitado. – glampert

Respuesta

17

Debe incluir la biblioteca de OpenGL en la línea de comando, así como la biblioteca glut /. Trate de añadir -lGL hasta el final de la línea de comandos

g++ -L/usr/lib simple.cpp -lglut -lGL 
+0

Gracias. Resolvió mi problema parcialmente, así que pude hacer el resto (tuve que agregar '-lGLU' también). – phimuemue

+9

Cualquiera puede explicar por qué imprime '/usr/lib/libGL.so.1: no se pudieron leer los símbolos: operación no válida'? Parece que intenta leer la biblioteca faltante, pero falla. –

1

compilar con

g++ main.cpp -o main.bin -lGL -lGLU -lglut 

o tratar de hacer que el siguiente archivo de OpenGL primer es muy compacto. Éste me ayudó a ejecutar mi Hello world OpenGL. Gracias a OpenGL Primer

CC = g++ 
SRC = main.cpp imageloader.cpp 
LIBS = -lGL -lGLU -lglut 
EXEC = cube.bin 

all: 
     $(CC) $(SRC) -o $(EXEC) $(LIBS) 

clean: 
     rm -rf $(EXEC) *~ 
Cuestiones relacionadas