martedì 25 gennaio 2011

Ubuntu, compilazione SDL + OpenGL ( GCC )

Mi è capitato di compilare degli esempi di utilizzo della libreria SDL, per questi non ci sono grandi problemi, basta la classica sintassi:

gcc nomefile.c `sdl-config --cflags --libs` -o nomefile


quando però sono arrivato agli esempi che utilizzano OpenGl ho notato che gli errori circa riferimenti mancanti alle varie funzioni di OpenGL, ad esempio:

...

testgl.c:(.text+0x25e): undefined reference to `glPushAttrib'
testgl.c:(.text+0x26a): undefined reference to `glDisable'
testgl.c:(.text+0x276): undefined reference to `glDisable'
testgl.c:(.text+0x282): undefined reference to `glEnable'
testgl.c:(.text+0x28e): undefined reference to `glEnable'
testgl.c:(.text+0x2a2): undefined reference to `glBlendFunc'
...

la soluzione è abbastanza semplice, aggiungiamo -lGL per dire che vogliamo linkare la libreria di OpenGl:

gcc nomefile.c -lGL `sdl-config --cflags --libs` -o nomfile


notare che lo stesso vale nel caso facessimo uso anche di altre librerie, ad esempio "glut" :

 gcc nomefile.c -lGL -lglut `sdl-config --cflags --libs` -o nomfile


se poi il nostro sorgente controlla che ci sia un define come ad esempio "HAVE_OPENGL" allora possiamo compilare cosi:

 gcc nomefile.c -lGL -lglut `sdl-config --cflags --libs` -o nomfile -DHAVE_OPENGL









Nessun commento:

Posta un commento