Compiler en console sous Linux

Introduction :
I - installer gcc, g++, et make sous Ubuntu et Debian :
Au cas où gcc ne serait pas installé sur votre Ubuntu ou Debian, faites ceci en console :
sudo apt-get install build-essential
Je n'indique que pour cette distribution, car le nom du paquet (build-essential) est particulier. Pour utiliser les gestionnaires des paquets d'autres distributions user-friendly, je vous renvoie à la liste des commandes Unix.
II - compiler en C avec gcc :
Il est conseillé, pour programmer avec GCC, de savoir utiliser un éditeur de texte en Console (Vim, ou Emacs de préférence), je vous renvoie à cet article.
Pour un seul fichier NomDuFichier.c :
gcc NomDuFichier.c -o NomDuProgramme
ou encore :
cc étant désormais un alias de la commande gcc (à l'origine c'était le compilateur C sur Unix dont GCC est le clône GNU).
Pour exécuter le programme, faites ./NomDuProgramme en console (attention au chemin).
Remarque : si vous faites uniquement gcc NomDuFichier.c ou cc NomDuFichier , vous aurez l'apparition d'un exécutable a.out dans votre répertoire /home/VotreNom.
Pour compiler un projet composé des fichiers : main.c, fonctions.c et header.h :
gcc main.c fonctions.c -o NomDuProgramme
Remarques :
Il faut parfois inclure l'option -lm dans la commande de compilation pour inclure certaines bibliothèques ou fichiers d'entêtes comme <math.h>.
- Pour activer les Warnings, il faut inclure certaines options comme -Wall, etc, je vous renvois au site d'Emanuel Delahaye ou encore à Gcc option summary (issu de la documentation officielle).
- man gcc pour en savoir plus.
- L'option -c indique à GCC de ne pas linker, vous n'aurez pas de fichier.o,
ex : gcc -c main.c -o NomDuProgramme
- Pour connaître toutes les options de GCC, je vous renvois à cette documentation : Gcc option summary.
III - compiler en C++ avec g++ :
C'est exactement le même processus sauf qu'il faut remplacer gcc par g++ dans la commande de compilation.
exemples :
1) g++ NomDuFichier.cpp -o NomDuProgramme
2) g++ main.cpp fonctions.cpp -o NomDuProgramme
IV - compiler ses projet avec make :
Vous devez créer un fichier appelée Makefile dans le répertoire courant afin de pouvoir utiliser la commande make. Le Makefile est le fichiers dans lequel vous écrirez les commandes qui doivent être exécutée par la commande make.
Les commandes doivent respecter cette ordre :
cible: dépendances
commandes
...
(Vous devez impérativement respecter les tabulations devant les commandes).
Voici un exemple de Makefile : C'est le Makefile d'un projet en C
composé d'un fichier main.c, fonction.c et header.h):
Code : Bash
# Ceci est un commentaire
# création de l'exécutable 'NomDuProgramme'
NomDuProgramme: main.o fonctions.o
gcc main.o fonctions.o -o NomDuProgramme
main.o: main.c
gcc -c main.c -o main.o
fonctions.o: fonctions.c
gcc -c fonctions.c -o fonctions.o
# suppression des fichiers.o
efface:
rm -rf *.o
make NomDuProgramme en console compilera votre projet.
make efface supprimera tout les fichiers.o .
Mais pour les warnings, l'écriture deviendrait laborieuse ...
C'est pourquoi, il est préférable d'écrire une variable
(voir cet article pour en savoir plus) qui contiendrait
toutes les options de gcc concernant les warnings.
Reprenons notre Makefile, et insérons quelques Warnings:
Code : Bash
# Ceci est un commentaire
# Déclaration de la variable "warnings"
warnings = -Wall -Wextra - pedentic -ansi -Wwrite-strings
-Wstrict-prototypes -Wuninitialized -Wunreachable-code
#création de l'exécutable 'NomDuProgramme'
NomDuProgramme: main.o fonctions.o
gcc main.o fonctions.o -o NomDuProgramme
main.o: main.c
gcc -c main.c $(warnings) -o main.o
# attention, les parenthèses sont importantes ici
fonctions.o: fonctions.c
gcc -c fonctions.c $(warnings) -o fonctions.o
#suppression des fichiers.o
efface:
rm -rf *o
Aller plus loin :
Et voilà, vous savez à peu près l'essentiel pour compiler des projets en C
et en C++, vous pouvez également aller plus loin en consultant ce tuto du sdz et ce tuto de devellopez.com sur les Makefiles.


Commentaires
ok site : linuxinfosastuces.blog4ever.com | le 07/02/2009 à 14:07:15Si vous pensez qu'il est utile de rajouter d'autres choses dans cette article, dites-le (merci d'avance). Vous pouvez aussi y laisser une note, ainsi que vos impressions sur l'article et de corriger d'éventuelles erreurs.