2009-12-03 7 views
1

Le serveur linux de mon école est juste un serveur strict, pas de x-windows, juste une interface de ligne de commande.comment utiliser SDL dans Linux?

J'ai essayé de créer un programme graphique c sur ce serveur mais j'ai rencontré beaucoup de difficultés. J'utilise la bibliothèque SDL, mais chaque fois que la compilation avec gcc, il se plaint:

testcursor.c :(texte + 0x1ad):. Undefined reference to SDL_Init' testcursor.c:(.text+0x1b6): undefined reference to SDL_GetError » testcursor.c :(texte + 0x200):. Référence non définie à `SDL_SetVideoMode ' .....

Est-ce que quelqu'un sait comment résoudre le problème? Si non, y a-t-il quelqu'un qui a fait du programme graphique dans c à linux, aidez s'il vous plaît! J'apprécierais. Merci.

+2

FYI, Si vous n'avez pas X-windows, vous ne serez pas en mesure d'exécuter votre programme SDL graphique sur ce serveur. Cela rendra le débogage assez difficile. – IanNorton

+0

Vous pouvez si vous utilisez le périphérique framebuffer directement. DirectFB est un moyen de le faire. –

Répondre

6

Ajoutez -lSDL à votre ligne de compilation.

Ceci indique à gcc de lier votre code à la bibliothèque SDL.

3

Vous n'êtes pas lié à la bibliothèque SDL. Votre commande devrait ressembler à ceci:

gcc testcursor.c -lsdl 

C'est en supposant que vous utilisez le SDL fourni avec votre distribution Linux. Si vous avez téléchargé et construit par la main, vous pourriez avoir besoin quelque chose de plus compliqué, comme ceci:

gcc -I/usr/local/include/sdl testcursor.c -L/usr/local/lib -lsdl 

Les options -I et -L dire gcc où chercher inclure des fichiers et des bibliothèques, respectivement. La première commande n'en a pas besoin parce que si vous utilisez le stock SDL pour votre système, ils sont dans les emplacements par défaut.

+0

Juste pour clarifier, en raison de la police ... c'est -i (mais en majuscules) et -L, où chercher les fichiers. -L (mais en minuscules) sert à lier un fichier de bibliothèque spécifique dans le répertoire -L (majuscule). (La majuscule i et minuscule L semblent différentes dans le bloc de code, mais dans la police de texte, il pourrait être clair!) –

+0

J'ai un problème que je ne suis pas l'utilisateur root de ma machine linux scolaire. Par conséquent je n'ai aucun privilège d'installer n'importe quelle bibliothèque (comme sdl par exemple). Je pense à cause de cela je ne peux pas compiler avec votre commande ci-dessus. Je me demande s'il existe un moyen de contourner ce problème? – root

+0

La solution la plus évidente consiste à demander à votre administrateur système d'installer SDL et toutes les autres bibliothèques dont vous avez besoin. Si cela ne peut pas arriver, vous pouvez les installer sous votre propre compte. Téléchargez la source, et essayez de la configurer avec une commande comme "./configure --prefix = $ HOME". Vous pouvez ensuite faire "make install" sans être root, car tout ira dans les sous-répertoires de votre répertoire personnel. Ensuite, la commande gcc ci-dessus devient comme "gcc -I $ HOME/include ..."Prenez garde, si votre système est vraiment verrouillé, SDL n'aura peut-être pas la permission de prendre en charge l'intégralité de l'écran, comme c'est le cas. –

9

Le recommended way de liaison SDL sur Linux utilise le script sdl-config.

exemple:

gcc -c test.c `sdl-config --cflags` 
gcc -o test test.o `sdl-config --libs` 
./test 

ou par exemple:

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

où `est le caractère de la tique arrière.