Le problème n'en est pas vraiment un. Quelques explications:
- Les fichiers en-têtes sont utilisés par le préprocesseur, ils ne contiennent pas, en principe, de code exécutable, mais des déclarations, parfois des définitions (si tu envisage un jour de passer à C++, ces notions sont vraiment très importantes).
- Il faut donc que tu indiques à l'éditeur de liens quels sont les modules (fonctions si tu préfère) qu'il doit incorporer dans l'exécutable. Pour gcc, cela se fait par une combinaison d'options comme -L et/ou -l.
-L te permet de rajouter un répertoire à la liste des répertoires dans lesquels l'éditeur de liens va rechercher les éléments dont il a besoins.
-l permet à l'éditeur de liens d'aller parcourir la librairie spécifiée pour y trouver, un ou plusieurs modules dont il a besoin.
Ce sont de brêves explications, la réalité est un peu plus subtile, par exemple, l'ordre de recherche, utile à définir en cas de synonymie dans les noms de modules (si tu test une nouvelle version d'un module). Dans un premier temps, contente-toi de choses simples, lorsque tu les maitrisera, passe à un peu plus compliqué et, petit à petit, tu vas devenir un as.
Prenons à titre d'exemple que tu as un programme p.c, utilisant plusieurs modules,
1) un module m1.c, pas encore compilé, m1.c est dans le répertoire courant,
2) un module m2.c , déjà compilé, m2.o est dans le répertoire courant,
3) Un module m3, déjà compilé, contenu dans une librairie statique libmalib.a, elle-même située dans le répertoire ~/r1.
La commande de compilation sera:
gcc p.c m1.c m2.o -L~/r1 -lmalib
Tu peux rajouter d'autres options à cette ligne de commande.
Lorsque tu maitrisera les librairies statiques, tu pourras te faire les dents sur les librairies partagées.
Salut
Poste le Thursday 22 January 2004 08:00:47