Login
Mot de passe
identifiants perdus

Informations
  • Auteur(s) : idriss
  • Catégorie : C et C++
  • Moyenne : 17/20
  • Date de création : 06/08/2010
  • Date mise à jour : 21/05/2012

  • Licence : Contrat Creative Commons

print Version imprimable

Compiler en console sous Linux

Introduction :

GCC signifie "Gnu Compiler Collection", il s'agit d'un compilateur (programme qui traduit un langage de programmation en langage d'assemblage ou langage machine, dans le cas du C et du C++, il s'agira d'une traduction en langage machine qu'est le binaire) libre créé par le projet GNU. Ce compilateur rassemble une panoplie de logiciels libres intégrés capables de compiler divers langages de programmation, dont le C, C++, Objective-C, Java, etc. (En console, la commande gcc compile en C, la commande g++ en C++, etc). GCC est à l'origine de la plupart des logiciels libres et est étroitement lié au noyau Linux. Il a été aussi porté sur de quelques plateformes pour Windows comme MinGW qu'utilise certains IDE comme Code::Blocks ou Dev C++. GCC possède sa documentation officielle sur le net, celle-ci comporte toutes ces options.

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

ou encore :

sudo aptitude install build-essential

Pour Fedora, RHEL et CentOS :

[ ~] su -
root's password :
[ $] yum install gcc
[ $] yum install gcc-c++

Pour les autres distributions, renseignez-vous sur les différents paquets à installer et sur l'utilisation de votre gestionnaire des paquets.

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), pour cela vous pouvez consulter la partie I de cet article.

Pour un seul fichier NomDuFichier.c :

gcc nom_du_fichier.c -o nom_du_programme

ou encore :

cc nom_du_fichier.c -o nom_du_programme

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 ./nom_du_programme en console (attention au chemin relatif).

Remarque : si vous faites uniquement
gcc nom_du_fichier.c ou cc nom_du_fichier , vous aurez l'apparition d'un exécutable a.out dans votre répertoire /home/votre_nom.

Pour compiler un projet composé des fichiers : main.c, fonctions.c et header.h :

gcc main.c fonctions.c -o nom_du_programme

(Il faut suivre l'ordre : 1) cible ; 2) dépendances).

Remarques :

Il faut parfois inclure l'option -lm dans la commande de compilation pour inclure certaines bibliothèques ou fichiers d'entêtes comme .

- 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 nom_du_programme
- 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++ nom_du_fichier.cpp -o nom_du_programme

2)  g++ main.cpp fonctions.cpp -o nom_du_programme

Je rappel que pour exécuter le programme, il faut faire ./nom_du_programme en console (attention au chemin).

 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):

# 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
clean:
    rm -rf *.o

make NomDuProgramme en console compilera votre projet. 
make clean 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 qui contiendrait toutes les options de gcc concernées.


Reprenons notre Makefile, et insérons quelques Warnings:

# 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
clean:
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 ces liens :


Vous pouvez aussi compiler des programmes en java en ligne de commande grâce à l'outil javac (à installer) :

javac nom_du_fichier.java
java NomProgramme



Vous devez être connectés pour poster un commentaire ou une note ...

30401 visiteurs au total - mentions légales - [nous contacter]