2010-08-13 9 views
10

Sto provando a creare un'app OpenGL molto semplice sotto Ubuntu 10.04 (ho un sistema a 32 bit).linker g ++: /usr/lib/libGL.so.1: impossibile leggere i simboli: Operazione non valida

Quando sto cercando di compilare il file, ottengo il messaggio di errore:

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 

Qualcuno sa che cosa sto facendo male?

+0

Non proprio correlate alla tua domanda, ma vedo che si sta utilizzando glEnd(), che è deprecato dal GL3. Se stai iniziando la programmazione OpenGL, ti suggerirei di iniziare a utilizzare GL3 + con il "profilo principale". La vecchia OpenGL non è solo lenta, ma anche molto limitata. – glampert

risposta

17

È necessario includere la libreria opengl sulla riga di comando e la libreria glut /. Prova ad aggiungere -lGL alla fine della riga di comando

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

Grazie. Ha risolto parzialmente il mio problema, quindi ho potuto fare il resto (ho dovuto aggiungere anche '-lGLU'). – phimuemue

+9

Chiunque può spiegare perché stampa '/usr/lib/libGL.so.1: impossibile leggere i simboli: operazione non valida'? Sembra che cerchi di leggere la libreria mancante, ma in mancanza. –

1

compilare con

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

o provare il file seguenti fanno da OpenGL primer è molto compatto. Questo mi ha aiutato a gestire il mio Hello world OpenGL. Grazie 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) *~ 
Problemi correlati