# \[C\]compiler en ligne de commande

**URL:** <https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 10:55 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657 "2016-02-20T22:55:00Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 10:55 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/1 "2016-02-20T22:55:00Z")

</div>

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

```auto
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](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut")

---

<div class="post-metadata">

**Author:** ![BenJi](https://www.debian-fr.org/user_avatar/www.debian-fr.org/benji/32/3592_2.png) [@BenJi](https://www.debian-fr.org/u/BenJi)\
**Post date:** [Février 20, 2016, 10:55 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/2 "2016-02-20T22:55:00Z")

</div>

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

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

```auto

```

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

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 10:55 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/3 "2016-02-20T22:55:00Z")

</div>

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 😃 .  
Les Makefiles, c’est vrai que ça semble idéal, mais il faut d’abord connaitre simplement les commandes à passer pour compiler.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 10:55 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/4 "2016-02-20T22:55:00Z")

</div>

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 :

```auto

```

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.

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 10:55 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/5 "2016-02-20T22:55:00Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![Spip](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/9e8a1a/32.png) [@Spip](https://www.debian-fr.org/u/Spip)\
**Post date:** [Février 20, 2016, 10:55 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/6 "2016-02-20T22:55:19Z")

</div>

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/](http://florian-goujeon.developpez.com/cours/cmake/initiation/)

Bon courage.

---

<div class="post-metadata">

**Author:** ![Dixippe](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/5f8ce5/32.png) [@Dixippe](https://www.debian-fr.org/u/Dixippe)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/7 "2016-02-20T23:10:34Z")

</div>

Bonjour,

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

---

<div class="post-metadata">

**Author:** ![dmon](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dmon/32/5587_2.png) [@dmon](https://www.debian-fr.org/u/dmon)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-compiler-en-ligne-de-commande/27657/8 "2016-02-20T23:10:47Z")

</div>

[_][Compilation séparée et Make](http://www.april.org/sites/default/files/groupes/doc/make/make.html?q=groupes/doc/make/make.html)  
[_][./configure](http://ymettier.free.fr/articles_lmag/lmag75/lmag75.html)  
[\*][./configure et vos bibliothèques](http://www.unixgarden.com/index.php/programmation/configure-et-vos-bibliotheques)
