Professional Documents
Culture Documents
Ce (court) chapitre décrit succinctement des commandes qui peuvent vous être utiles si vous vous essayez à
programmer en utilisant le système d’exploitation Gnu/Linux.
1 Système de fichiers
L’utilisation du shell est monnaie courante avec les systèmes Unix. Le minimum vital à connaı̂tre est :
ls -l beginitemizee les répertoires et fichiers du répertoire courant
cd <dir> va dans le répertoire <dir>
cp <fic1> <fic2> copie <fic1> et appelle la copie <fic2>
mv <fic1> <fic2> déplace <fic1> sous le nom <fic2>
rm <fic> efface le fichier <fic>
pwd affiche le nom du répertoire courant
mkdir <rep> crée le répertoire rep
man <commande> affiche la page de manuel de la commande <commande>
2 Éditer le source
Un éditeur de texte ordinaire convient à l’écriture d’un programme C. Rappelons à cette occasion qu’un éditeur
de texte ordinaire n’est pas un programme de traitement de texte (comme Word ou OpenOffice Writer). Il ne vous
permet pas de créer des titres, ou de faire une table des matières, ce qui n’aurait aucun sens en C.
Les éditeurs servant à programmer sont nombreux sous Gnu/Linux. Pour une prise en main rapide, Scite (com-
mande scite) me semble approprié. Pour une utilisation intensive, mais qui demandera un minimum d’apprentis-
sage, Emacs (commande emacs ou xemacs selon la version que vous avez) reste une référence.
1
2 Compléments Algo-Prog – Esip 1–
4.1 Compilation
La compilation permet de transformer un fichier contenant du code source en fichier objet. Un fichier contenant du
code source porte généralement l’extension .c, alors qu’un fichier objet a généralement pour extension .o.
La ligne de commande minimale qui permet de transformer le fichier .c en fichier .o est (en supposant que le
fichier source a pour nom toto.c) : gcc -c toto.c Le fichier objet aura alors pour nom toto.o. L’option -c
indique à gcc que l’on ne veut effectuer que l’étape de compilation. Durant cette étape, le compilateur lit le code
source et le transforme en code objet. Il faut par conséquent que votre code source soit parfaitement compréhensible
par le compilateur. La moindre faute de frappe (whole à la place de while par exemple) provoquera une erreur, de
même que l’oubli d’un ; ou une accolade mal placée. Ces erreurs, qui empêchent la compréhension du code source,
sont appelées erreurs de syntaxe. La détection d’une erreur de syntaxe dans le code source empêche le
compilateur de générer le code objet. Si le compilateur comprend votre code source mais pense néanmoins
(généralement à juste titre) que vous avez commis une erreur, il n’indique pas une erreur, mais un avertissement ou
warning. L’émission d’un warning n’empêche pas la génération du code objet, mais il est toujours plus prudent de
corriger la faute probable. Afin d’être mis au courant de tous les warnings trouvés dans votre code, il faut exécuter
la ligne de compilation suivante : gcc -c -Wall toto.c
4.3 Bibliothèques
De nombreuses fonctions utiles ne sont pas incluses dans le langage C de base, comme en particulier certaines
fonctions mathématiques (fonctions trigonométriques par exemple). Le travail de programmation des fonctions
usuelles a néanmoins déjà été effectué et continue sans cesse d’être amélioré. Ces fonctions sont distribuées sous
forme de bibliothèques (une bibliothèque correspond plus ou moins à un fichier objet). Lorsqu’on souhaite utiliser
une fonction qui se trouve dans une bibliothèque, il faut préciser le nom de la bibliothèque lors de l’édition de
liens. La commande : gcc -o prog toto.o -lX11 indique que le fichier objet toto.o utilise des fonctions que l’on
peut trouver dans la librairie X11 (librairie graphique). gcc -o prog toto.o titi.o -lX11 -lm indique que le
programme exécutable prog doit être construit en utilisant les fonctions qui se trouvent dans les fichiers objets
toto.o et titi.o ainsi que dans les bibliothèques X11 et m (fonctions mathématiques).
dans ce cours.
3
Dans l’exemple du programme de pgdc donné précédemment nous avons utilisé les fonctions printf et scanf. Ces
fonctions ne font pas partie du C de base, mais d’une librairie, qu’on appelle librairie standard. Il est inutile de
préciser, à l’édition de liens que l’on veut utiliser la librairie standard, celle-ci est toujours incluse. Néanmoins,
les fonctions de cette librairie doivent être déclarées, comme à l’habitude, avant d’être utilisées. Les prototypes de
ces fonctions sont définis dans plusieurs fichiers en-tête. Celui correspondant à printf et scanf est stdio.h. Ceci
explique la présence de la ligne #include<stdio.h> dans le programme.