On Thu, 21 Jun 2001, CHARLIER Philippe wrote:

> Hem,

Yep !

> 
> >
> > cc -I/usr/include/SDL -D_REENTRANT   -c -o mouse.o mouse.c
> > cc -o cmouse mouse.o -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lpthread -lm
> >
> > Je les ai essayees sur mon programme : OK ca marche.
> >
> > Probleme 1 : Je ne les comprends pas (c'est un demi probleme).
> >
> > Probleme 2 : Meme en sucant mon pouce, j'aurais ete incapable de les
> > trouver. Comment faire pour "deviner" les options a utiliser lorsque l'on
> > veux compiler un programme personnel.


D'entree de jeux:

(si je dis une betise, corrigez moi)

Il faut separer le moment de la compilation (ligne 1) du linkage (ligne
2). En fait, dans le premiere ligne, tu lui demande (grace a l'option -c)
de traduire ton code c en binaire. Logiquement, sans l'instruction
-Ibla/..., il aurait du te donner un message du genre 

In file bla.c
        chose.h not found at line Y


(en fait, les repertoires a partir des quels tu pourra faire une
instruction de type
#include <youkoulele.h>

Qu'en retenons nous: -I/bla/ permet de specifier le chemin ou se trouvent
les fichieres include. La directive -D_REENTRANT est pour specifeir un
symbole de compilation (comme qd tu compiles un kernel; il met un truc du
genre -D_KERNEL_ -- chai pu, pas de linux sous la main) qui sera exploite
par des instructions de type #ifdef YO 

Dans la ligne 2, on procede au linkage, c'est a dire l'edition des liens
avec des libraires existantes (en tres simplifie, dans le cadre des
librairies dynamiques, les references a la table des symboles dans les
libs.)

Iic, vec la directive -L/yo/ tu lui specifie ou trouver les libs en
question, et -lyo permet de faire l'edition des liens avec la libraire
libyo.so.x.y

A partir de -W, je sais pas ;-(

En conclusion, que devons nous retenir pour simplifier la compilation
- specifier le chemin des includes avec -I
- le chemin des libs avec -L
- et les librairies dont se servira le programme au moyen de -lyo ou le
fichier librairie sera libyo.so

Hope it helps

Gerd


Alleie, la dessus, encore bon amusement pour les gens qui sont encore en
examen (plus que deux ! -- aaaaagh)

> >
> > Merci d'avance.
> >
> > Philippe
> >
> > PS. : J'etais deja "tombe sur le cul" il y a quelques temps lorsque je
> > n'arrivais pas a compiler un programme utilisant "math.h" et que j'ai
> > decouvert qu'il fallait le parametre -lm a la commande gcc.
> >
> > RePS : Il y a bien "man gcc", mais bon, avant d'arriver au bout je vais
> > passer 20 ans a comprendre le compilateur et 0 a programmer ... or c'est
> > maintenant que je veux programmer ;-)
> >


[ Soyez précis dans vos sujets svp afin de déterminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ http://LinuxBe.org              Contact: [EMAIL PROTECTED]  ]

Répondre à