Conduite de Projet en C sous GNU/Linux

Un programme l'"exécutable" est produit à partir d'un ensemble de fichiers

Source C (.c)

C'est en général sous ce format que vous écrirez vos programmes.

Fichier (source) d'entête (.h)

Fichiers inclus dans les sources C ou assembleur, contiennent en général les définitions de fonctions, variables, macros,... Certains fichiers entête contiennent la définition et la description d'images au format XPM ou XBM (formats d'image propres au système X11) et ne portent non plus l'extension (.h) mais (.xpm) ou (.xbm).

Fichier objet (.o)

Ces fichiers ne sont plus des fichiers texte comme les précédents, mais des fichiers binaires. Inutile donc de les éditer. Un fichier objet est l'image d'un (et d'un seul) fichier source C ou assembleur, lisible non plus par nous mais par l'ordinateur (le système d'exploitation - ici le noyau Linux - pour être plus précis).

Fichier archive (.a)

Ce fichier est la réunion de plusieurs fichiers objet, sans aucun lien entre eux.

Le Fichier exécutable

est le programme que nous exécuterons (il deviendra un processus). Ce dernier fichier est la réunion de tous les fichiers objet et archive nécessaires à la bonne marche du programme.

Des liens sont créés entre ces fichiers, afin qu'une partie du programme contenu dans un fichier objet puisse par exemple appeler une autre partie contenue dans un autre fichier objet (du point de vue de fichiers sources, que l'on puisse par exemple appeler d'un fichier une fonction écrite dans un autre fichier).

Le compilateur et outils associés

Le compilateur C (gcc) travaille en plusieurs étapes. Par défaut, la commande gcc exécute toutes ces étapes sur les fichiers donnés en paramètre. Il faut lui préciser une option pour qu'il s'arrête après une de ces étapes.

la compilation assempblage

Utilisez l'option -c de gcc pour qu'il s'arrête après l'assemblage.

l'édition de lien

regroupe et relie plusieurs fichiers objet pour créer l'exécutable.

exemple

/**

* main.c

* appel puis affiche le resultat de la fonction plus

* Exemple simple pour illustrer la compilation, edition de lien

*/

#include <stdio.h>

#include "plus.h"

main() {

int x=10;

int y=20;

printf("%d+%d=%d*n",x,y,plus(x,y));

}

/**

* plus.c

* la fonction plus adition de 2 entiers

* Exemple simple pour illustrer la compilation, edition de lien

*/

int plus(int a, int b) {

return (a+b);

}

gcc -c main.c ==> crée main.o

gcc -o plus main.o plus.o => création de l’exécutable plus

gcc -c plus.c ==> crée plus.o