TP 1 Pour Dede

Vous aimerez peut-être aussi

Vous êtes sur la page 1sur 2
UT Université de TOURS - Faculté des Sciences et Techniques Antenne Universitaire de BLOIS université i i tT ‘i une Licence Sciences et Technologies, Mention Informatique Module 1 -Informatique — Algorithmique et Programmation Objet Travaux Pratiques (2), Licence 1ére Année Mon Premier Programme C Exercice 1 Exemples de compilations On considare que Von a un code source écrit dans le fichier ex1.c. Expliquer ce qui se passe dans les situations suivantes : 1. je fais gee ex1.c que se passe-t'il quand j'exécute ex1 ? 2. je fais gee ex1.c que se passe-t'il quand j’exécute . /ex1 ? 3. je fais gee ex1.c que se passe-t’il quand j’exécute a.out ? 4, je fais gee ex1.c que se passe-tiil quand j'exécute ./a.out ? Exercice 2 Compilation et Construction d’un Makefile simple Vous allez procéder a l'écriture de votre premier programme en langage C, a sa compilation et son exécution. Commencez par écrire le programme en vous servant d’un éditeur (gedit, par exemple). Donnez-lui le nom hello.e et recopiez-y le texte suivant Finclude int main(){ Printf(*Hello workd 1"); return 0; Pour le compiler, tapez gee -Wall hello.c : ceci (gee) compile le programme hello.c et génére (si pas d'erreurs) un exécutable appelé par défaut a.out. Pour exécuter votre programme (exécutable), tapez ./a.out. -Wall indique au compilateur qu'il affiche tous les warnings-avertissements. Si vous souhaitez donner un autre nom a U'exécutable, vous pouvez le mentionner ala suite de Voption -o : gcc -Wall hello.c -o progl, générera un exécutable de nom prog1 dont Vexécution se fait en tapant . /progl. Un projet est souvent constitué de plusieurs programmes sources C. Pour illustrer, décomposons notre programme hello.c en 2 programmes comme suit : 7* Programe hello.c *7 7* Programme atfiche.c *7 void affiche(char *); #include int main(){ affiche("Hello world !* void affiche(char *texte){ return 0; printf ("%s\n", texte); y y Pour compiler (ce "projet"), il faut taper gee -Wall hello.c affiche.c -o progl et on obtient Uexécutable progl qu’on peut exécuter comme précédemment et obtenir le méme résultat. Travaux Dirigés (8) - Classes et Objets Page 1/5 OT iiss | Module 1 ~ Informatique - Algorithmique et Programmation Objet Ici, il s’agit dun "projet" constitué que de 2 programmes sources. Sil en comportait plusieurs dizaines, cela deviendrait fastidieux, d’autant que la mise A jour (correction, par exemple) d’un seul programme nécessiterait la compilation de tous les autres. On peut limiter cela si l'on ne procéde a la compilation de chacun des sources pour produire les fichiers objets et procéder a U'édition de lien a la fin. Par exemple : 1. gce -Wall -c hello.c // génere un fichier objet hello.o 2. gee -Wall -c affiche.c // génere un fichier objet affiche.o 3. gcc -Wall hello.o affiche.o -o progl _// édition de liens Testez, vous obtiendrez toujours un exécutable progl qui donnera le méme résultat. Dans le cas oti un seul programme source est modifié, il est inutile de compiler les autres. Si hello.c est modifié, il faudra exécuter a nouveau uniquement les commandes 1. et 3. précédentes, mais ga reste fastidieux. i existe un outil, make, qui facilite 'automatiser de la compilation d’un projet. Nous ne verrons pas en détail ses possibilités mais juste quelques aspects qui vous feront gagner du temps. Pour le projet précédent, il nous a fallu exécuter les commandes de 1. a 3. Pour produire notre exécutable progi. Suite a la modification de hello.e, il a fallu exécuter & nouveau les commandes 1. et 3.. Le réle de make est de reproduire ces séquences de commandes lors d’événements en fonction des relations entre les fichiers. Dans notre exemple, hello.c produit hello.o, affiche.c produit affiche.o et hello.o et affiche.o produisent progl. Ces relations, il suffit de les fournir & make en les décrivant dans un fichier texte Makefile. Une relation s’écrit sous la forme : produit : source commande elle indique que produit est construit a partir de source et que c'est commande qui permet de le réaliser. Nos 3 commandes précédentes peuvent étre décrites par les relations suivantes : progl : hello.o affiche.o gcc -Wall hello.o affiche.o -o prog] hello.o : hello.c gece -Wall -c hello.c affiche.o : affiche.c gcc -Wall -c affiche.c Vous remarquerez que la régle correspondant a la commande 3. est mise en 1", car c'est la position de la plus prioritaire, et elle correspond a la construction de notre projet. Travaux Dirigés (8) - Classes et Objets Page 2/5

Vous aimerez peut-être aussi