[C]compiler en ligne de commande

Bonjour!
Je voudrais compiler les petits programmes que je suis amené à écrire en ligne de commande. Jusqu’à présent, cette méthode fonctionnaire toujours :

gcc programme.c -o executable

Cependant, si j’inclus d’autres bibliotheques, j’ai par exemple ce genre d’erreur :

$ gcc sdl.c -o test /tmp/ccl7f4Qp.o: In function `main': sdl.c:(.text+0x15): undefined reference to `SDL_Init' sdl.c:(.text+0x1f): undefined reference to `SDL_GetError' sdl.c:(.text+0x4d): undefined reference to `SDL_Quit' collect2: ld returned 1 exit status

D’où ma question, comment lier plusieurs .o ensemble, ou comment éviter ce genre d’erreurs?
Merci :006

Je te conseille de voir comment marche les Makefile si tu commencent à avoir beaucoup de sources :stuck_out_tongue:

Sinon là c’est plus un problème de bibliothèques, il faut compiler comme ça pour lier avec la lib sdl :

(de mémoire, si c’est pas ‘SDL’ c’est ‘sdl’, ect.)

Oh! Super, ça marche comme ça! Je ne m’attendais pas du tout à devoir rajouter une option, comme on inclus la sdl.h dans le code… Enfin il me reste à apprendre :smiley: .
Les Makefiles, c’est vrai que ça semble idéal, mais il faut d’abord connaitre simplement les commandes à passer pour compiler.

Pas nécessairement. Tu prend un fichier toto.c que tu veut compiler pour créer un executable toto, il suffit d’utiliser la commande make ainsi :

Marche aussi avec le C++

Si tu veut ajouter une bibliothèque il devrait suffir d’utiliser la variable d’environement LDFLAGS et donc ceci devrait suffir :

export LDFLAGS="-lSDL" make toto
(bien sur tu peut ne la déclarer qu’une seule fois (voir la mettre dans le makefile)

Mais j’avous que c’est une bonne chose de savoir manipuler directement le compilateur.

Oui, au moins je sais ce que je fais. J’ai commencé à lire un tutoriel pour créer ses Makefiles, il faut savoir un minimum le fonctionnement du compilateur pour y arriver je pense.
Je ne savais pas que make suffisait pour un fichier simple, merci :slight_smile:

Bonjour,

pour apporter une petite précision, il y a plusieurs manières de créer les makefile.
A la main, ce n’est pas la solution, et donc, il y a des automatisations. Tu trouvera les autotools, mais je pense que cmake est plus facilement abordable :
florian-goujeon.developpez.com/c … nitiation/

Bon courage.

Bonjour,

L’IDE Anjuta génère tout à la création d’un projet, tu peux t’en inspirer.

[]Compilation séparée et Make
[
]./configure
[*]./configure et vos bibliothèques