Je viens de mettre à niveau de 11.4 à 11.10 et au moins une chose semble brisée: mon programme C++ utilise SDL et OpenGL. J'ai été capable de le compiler et de l'exécuter correctement avant la mise à niveau. Maintenant, je reçois des erreurs de l'éditeur de liens, par exemple
undefined reference to `SDL_Init'
J'ai libsdl1.2debian
et libsdl1.2-dev
paquets installés, je crois que c'est tout ce dont j'ai besoin (mais je me trompe peut-être). Je compile le programme comme ceci:
gcc -I /usr/include/SDL -lSDL -o test test.cpp
Toute idée de ce qui peut causer cela?
Ok, résolu. Apparemment, pour une raison mystérieuse, l'ordre des options de gcc est maintenant important. Alors quand je le fais:
gcc -I /usr/include/SDL -o test test.cpp -lSDL
(déplacé l'option -lSDL
à la fin) tout fonctionne parfaitement. J'adorerais savoir pourquoi cela a soudainement d'importance, alors qu'avant, si, ce n'était pas le cas, mais pour l'instant, je suis heureux que tout fonctionne à nouveau.
Pour Eclipse: J'ai le même problème, mais je résous.
... puis construisez le projet et lancez ...
Un simple GNU Makefile
pour un projet utilisant SDL:
CXXFLAGS:=(Shell pkg-config --cflags sdl2) $(CXXFLAGS)
LDLIBS:=$(Shell pkg-config --libs sdl2) $(LDLIBS)
all: test
Où un fichier test.cpp
existe dans le même répertoire que le fichier Makefile
.
(Notez que j'ai utilisé sdl2
au lieu de sdl
, car SDL 1.2 est pratiquement mort maintenant.)
GNU make
trouvera comme par magie la commande pour appeler g++
.
Dans mon cas, j'utilisais G ++ et cela ne fonctionnait pas, et le passage à GCC fonctionnait. J'écris en C cependant.
En utilisant Code :: Blocks, le drapeau de la bibliothèque est -lSDL2