Vous êtes sur la page 1sur 12

1AB

Langage C

2013-2014

Introduction au systme dexploitation Linux


Bref avant-propos sur le modle dun ordinateur

Figure 1: Architecture de Von Neumann

Le mathmaticien Von Neumann a propos le modle de la figure 1 pour dcrire un ordinateur dont le programme est stock dans sa mmoire. On distingue 4 parties distinctes : - lUnit Arithmtique et Logique (UAL) qui effectue les oprations de base ; - lUnit de Commande qui assure le squenage des oprations ; - la Mmoire qui contient le programme et les donnes ncessaires son bon fonctionnement ; - les Entres-Sorties pour communiquer avec le monde extrieur. Un microprocesseur est un circuit numrique qui excute des ordres donns dans un langage dit bas niveau. Un ordre sous forme de code machine est envoy au microprocesseur pour quil lexcute. Par exemple, la squence suivante constitue un ordre envoy au microprocesseur. 00011111010001110111000 Ces ordres sont simples correspondant des actions lmentaires comme par exemple des oprations arithmtiques comme laddition, la soustraction ou des oprations de comparaison : gal, suprieur, infrieur. Ces ordres peuvent ncessiter un ou deux arguments (loppos : -A, laddition : A+B). Le cours de Langage C vous permet dapprendre programmer dans un langage haut niveau qui sera par la suite transform en code comprhensible par le microprocesseur via le compilateur. Le systme dexploitation chargera ensuite ce code la demande de lutilisateur et excutera le programme. Nous allons donc dans un premier temps nous intresser lenvironnement de programmation commencer par le systme dexploitation.

Objectifs du TP
- - Se familiariser avec lenvironnement Linux Utiliser lenvironnement de programmation

1/12

1AB

Langage C

2013-2014

Introduction au systme dexploitation Linux


Linux est un membre de la famille des systmes dexploitation UNIX. Initi par Linus Torvalds en 1991 comme une alternative aux autres systmes dexploitation sur le processeur Intel 80386, il est devenu trs populaire et de nombreux dveloppeurs, rpartis aux quatre coins du monde, se sont rattachs au projet afin dtendre ses fonctionnalits pour le rendre facilement utilisable. Ces divers dveloppements ont permis dobtenir un systme dexploitation trs complet, comptitif avec les systmes commerciaux et qui est maintenant devenu une rfrence. Un des avantages fondamentaux de ce systme dexploitation est que son code source est plac sous la licence GNU GPL, et donc ouvert tous, en particulier aux tudiants. Il existe plusieurs distributions Linux, ayant chacune des objectifs et une philosophie particulire. La figure 2 montre diffrents systmes dexploitation existants, avec une vue dtaille sur quelques distributions de Linux.

Figure 2: OS et distributions de Linux

La distribution utilise lcole est la Scientific Linux . Elle est propose par des laboratoires et des universits, tels que le Fermilab et le CERN, rparties dans le monde. Son but premier est dhomogniser les installations Linux pour le domaine universitaire et de la recherche. Une distribution trs utilise et souvent mise jour est la distribution Ubuntu. De nombreux sites internet la prconisent et il existe de nombreux tutoriels fiables pour son installation et utilisation.

A. Premiers pas sous Linux


Chaque ordinateur possde un ensemble de programmes, appel systme dexploitation (OS pour Operating System), dont les objectifs sont de : - Interagir avec le matriel ou les priphriques. - Fournir un environnement dexcution aux applications et aux programmes des utilisateurs. Une des premires caractristiques dUNIX est son criture en langage C en presque totalit, permettant ainsi une portabilit sur la plupart des architectures matrielles. De plus, elle adopte une conception modulaire avec des interfaces bien dfinies entre les diffrentes couches. Par exemple, certains OS permettent aux programmes des utilisateurs dinteragir directement avec le matriel (MS-DOS). Au contraire, les OS UNIX grent les communications bas-niveau entre le matriel et les programmes utilisateurs. Lorsque le noyau reoit une requte de communication dun programme utilisateur avec un priphrique, il interagit directement avec le priphrique et rend compte du rsultat au programme utilisateur. La conception modulaire du noyau permet de grer de faon simple les pilotes de matriel. On peut ainsi tlcharger et installer de nouveaux paquets et pilotes pour de nouveaux priphriques, ou supprimer ceux dont on ne se sert plus.

Figure 3: Structure modulaire et en couches de Linux

2/12

1AB
A.I. Systme multi-utilisateurs

Langage C

2013-2014

Un systme multi-utilisateurs est capable dexcuter des applications appartenant deux ou plusieurs utilisateurs en mme temps et de sassurer que chacune des applications peut effectuer sa tche de faon indpendante, sans interfrence avec les autres. Ainsi un OS multi-utilisateurs doit inclure les aspects suivants : - Un mcanisme dauthentification afin de vrifier lidentit de lutilisateur ; - Un mcanisme de protection contre les applications dfectueuses (bugs) des utilisateurs qui bloqueraient le bon fonctionnement dautres programmes utilisateurs ; - Un mcanisme de protection contre les applications utilisateurs visant interfrer ou espionner lactivit des autres utilisateurs ; - Un systme de gestion de ressources allouant ou limitant les ressources ncessaires chaque utilisateur (par exemple, chaque lve dispose de 1Go despace mmoire). A.I.1. Prt, feu, connectez-vous !

Trve de blabla. Si vous tes dj pass par le CRI, vous devez avoir votre login de connexion et votre mot de passe. If you fail authentication or if you forgot your identification parameters, go directly to CRI do not pass Go, do not collect $200. Do it 1 : Se connecter son compte
Allumer lordinateur et choisir lOS Linux. Se connecter avec son identifiant et son mot de passe. Se familiariser avec lenvironnement graphique.

Figure 4: Interface graphique de Scientific Linux 6.2

A.I.2.

Apart n1 : Connexion internet

Lancez lapplication Firefox en cliquant sur le raccourci (ou menu Applications). Vrifiez si vous tes connect internet. Si oui, passez au paragraphe suivant. Sinon, pas de panique (intitul dun trs clbre guide intergalactique).

3/12

1AB
Do it 2 : Se connecter internet.

Langage C

2013-2014

Paramtrer la configuration de connexion internet du Cliquer sur le menu Edition Prfrences navigateur. Cliquer sur longlet Avanc , puis longlet Rseau Cliquer sur le bouton Paramtres Cocher Configuration manuelle du proxy Remplir la case HTTP Proxy avec lurl suivante : www-cache.ensea.fr Remplir la case port avec le nombre 3128. Cocher Utiliser ce serveur proxy pour tous les protocoles . Valider.

Vous devriez pouvoir accder internet maintenant. A ce stade, vous devez admettre que linterface graphique est suffisamment intuitive pour tre utilise au mme titre que dautres OS plus connus. Cela na pas toujours t le cas, en particulier aux dbuts de linformatique, o la puissance de calcul manquait cruellement pour des interfaces aussi volues que celles daujourdhui. On utilisait alors le terminal, qui na pas disparu, au contraire. Pourquoi cela ? A.I.3. Apart n2 : Terminal versus Interface graphique

Do it 3 : Lancer un terminal
Lancer un terminal. Le terminal se trouve galement Cliquer sur le raccourci du terminal. dans le menu Applications , puis Outils systme .

Une fentre saffiche avec un curseur attendant vos requtes. Des informations importantes se trouvent gauche de ce curseur, notamment le rpertoire courant dans lequel vous vous trouvez. Le symbole ~ reprsente le rpertoire rserv lutilisateur.

Figure 5: Terminal

Nous allons maintenant nous intresser un exemple dans lequel une requte via le terminal permet daller plus vite que linterface graphique. Do it 4 : Faire des requtes via le terminal
Se placer dans le rpertoire /lib. Taper la requte suivante dans le terminal: cd /lib Appuyer sur la touche Entre. Compter le nombre de librairies qui existent dans ce Taper la requte suivante : ls l | grep so | wc l rpertoire. Appuyer sur la touche Entre. Confirmer le rsultat trouv laide de linterface graphique.

Question 1 : Comparer la vitesse entre les deux mthodes. Quen pensez-vous ? Ainsi, mme si lutilisation du terminal nest dans un premier temps pas aussi intuitif que linterface graphique, il va falloir que vous fassiez des efforts pour lapprivoiser. Avec un peu dentranement et dutilisation, linterface graphique vous semblera plus contraignante

4/12

1AB

Langage C

2013-2014

Tip 1 : Une commande tape sous la console peut tre rappele en utilisant la flche du haut. Essayez. Tip 2 : La touche de tabulation permet de complter les noms de faon automatise. Si par exemple vous souhaitez charger un rpertoire dont le nom est Tlchargements , vous pouvez taper cd T puis appuyer sur la touche de tabulation, et le nom sera complt automatiquement. Essayez. Tip 3 : Veillez bien respecter majuscules et minuscules sous Linux. Les commandes sont en minuscules. De plus lespace est un caractre trs important car il sert sparer la commande de ses arguments. A.I.4. Utilisateurs et groupes

Linux associe chaque utilisateur un identifiant (UID), et chaque utilisateur appartient un groupe qui a lui aussi un identifiant (GID). Il existe un utilisateur spcial appel root ou superuser. Lorsque ladministrateur du rseau se connecte via ce compte, il peut grer les comptes de tous les utilisateurs, mettre jour le systme Bref, il a tous les pouvoirs. En particulier, tous les mcanismes de protection prive sont levs pour le root. Do it 5 : Connatre son UID et GID
Demander son UID et GID Taper la requte suivante dans le terminal: id votre_login en remplaant votre_login par votre login. Appuyer sur la touche Entre. Taper la requte suivante :

Demander lUID et le GID du root.

id root
Appuyer sur la touche Entre.

A.II.

Systme multi-tches

Un systme multi-tches permet dexcuter de faon apparemment simultane plusieurs applications ou processus. En ralit, cette simultanit sexplique par une transition rapide entre les diffrents processus, cest--dire qu un instant t donn, un seul processus est actif, les autres tant en pause (systme monoprocesseur). A.II.1. Processus Un processus peut tre dfini comme une instance dun programme en excution, ou comme le contexte dexcution dun programme en fonctionnement. Pendant son temps de fonctionnement, il monopolise le processeur. Lordonnanceur (scheduler), qui est un composant du noyau, permet dtablir lordre dans lequel les processus vont sexcuter. Mme lorsquaucun utilisateur nest connect, certains processus continuent de sexcuter. En particulier, un processus dcoute permet, lorsquune connexion a lieu, de vrifier les paramtres dauthentification. Lorsque linterface graphique est active, un processus soccupe de la gestion des fentres, et chaque fentre est elle-mme gre par un processus diffrent. Do it 6 : Lister les processus
Lister tous les processus. Taper la requte suivante dans le terminal: ps -efl Appuyer sur la touche Entre. Taper la requte suivante dans le terminal: en remplaant votre_login par votre login. Appuyer sur la touche Entre.

Lister les processus vous concernant.

ps efl | grep votre_login

Remarque : la colonne UID indique lidentifiant de lutilisateur, la colonne PID indique lidentifiant du processus. On voit ainsi que chaque processus possde galement son propre identifiant. Tip 4 : Pour obtenir de laide sur une commande partir de la console, utilisez man <commande>.

5/12

1AB
Do it 7 : Consulter laide.
Consulter laide pour la commande ps.

Langage C

2013-2014
Taper la requte suivante dans le terminal: man ps Appuyer sur la touche Entre. Pour se dplacer, utiliser les flches haut et bas. Pour quitter laide, appuyez sur la lettre q.

Consulter laide pour la commande grep.

Question 2 : Vous avez pu constater par deux utilisations la prsence du symbole | [Alt Gr + 6]. On lappelle tube (pipe en anglais). A votre avis, quoi sert-il ? A.II.2. Tuer un processus Parfois, il peut tre ncessaire de dbloquer le processeur occup de faon ininterrompu par un processus. Dans ce cas, on va tuer le processus laide de la commande kill. Do it 8 : Tuer un processus.
Consulter laide pour la commande kill. Ouvrir une fentre de lapplication Firefox. Trouver le PID de cette application. Tuer le processus li lapplication Firefox et vrifier que la fentre a bien t ferme.

A.III.

Systme de fichiers

A.III.1. Arborescence des fichiers Sous UNIX, les fichiers sont enregistrs dans une structure hirarchise en arbre. Ce systme de fichiers est donc compos dune racine et de nuds qui sont des rpertoires et des feuilles qui sont des fichiers ordinaires qui contiennent les donnes et les programmes.

Figure 6: Arborescence des fichiers sous Linux

Le fichier (ou le rpertoire) peut tre dsign : - soit par un chemin absolu, qui commence par la racine de larbre suivie de la liste des nuds quil faut suivre depuis la racine pour atteindre le fichier. Le chemin absolu du fichier td1.c. est ici /users/b/byakkuch/Documents/td1.c. - soit par un chemin relatif : le fichier dans ce cas est dsign depuis le rpertoire courant. Si ce dernier correspond /users/b/byakkuch, le fichier td1.c est dsign par Documents/td1.c.

6/12

1AB
Do it 9 : Lister les fichiers.
Se placer dans le rpertoire /etc

Langage C

2013-2014

Taper la requte suivante dans le terminal: cd /etc Appuyer sur la touche Entre. Consulter laide sur la commande ls. En particulier, trouver les options permettant dafficher tous les fichiers, ainsi que leurs permissions daccs.

A.III.2. Droits daccs des fichiers Les informations ncessaires au systme pour grer un fichier est contenu dans une structure de donnes appele inode. Dans cette structure, on trouve entre autres les attributs suivants : - le type de fichier - la taille du fichier en octets - lidentifiant du propritaire ou crateur du fichier (UID) - lidentifiant du groupe auquel appartenait le propritaire du fichier au moment de sa cration (GID) - les donnes relatives aux dates (cration, dernier accs, dernire modification) - les droits daccs du fichier Si vous avez encore le terminal prcdent o vous avez list les fichiers du dossier /etc (refaites-le le cas chant), vous pouvez voir un groupe de 9 caractres reprsentant les droits daccs du fichier. Les 3 premiers caractres indiquent les droits pour le propritaire, les 3 suivants pour le groupe du propritaire, et les derniers pour les autres utilisateurs.

Figure 7: Caractristiques des fichiers

Le premier caractre du groupe de 3 indique le droit la lecture (r pour read), le deuxime indique le droit lcriture (w pour write) et le troisime le droit lexcution (x pour execute). Le tiret indique que le droit nest pas accord. Ainsi le fichier hosts est lisible par tous, modifiable uniquement par le propritaire et non excutable. Chaque caractre reprsentant une information binaire d'autorisation, on considre habituellement les 3 groupes de caractres comme un nombre octal de 3 chiffres dfinissant les droits d'accs. Par dfaut, les droits d'accs lors de la cration d'un fichier est rw-r--r-- soit 644 en octal, et rwxr-xr-x soit 755 pour un excutable. Question 3 : Que reprsente le code octal 777 pour les droits daccs ? Do it 10 : Changer les droits daccs dun fichier.
Se placer dans le rpertoire /etc Changer les droits daccs du fichier passwd. Taper la requte suivante dans le terminal: chmod 777 passwd Appuyer sur la touche Entre. Consulter laide pour la commande chmod afin de voir une deuxime mthode de changement des droits.

Question 4 : Expliquez le rsultat obtenu.

7/12

1AB

Langage C

2013-2014
Taper la requte suivante dans le terminal:

Do it 11 : Changer les droits daccs dun fichier.


Se placer dans le rpertoire /etc Copier le fichier vers votre rpertoire Documents.

cp passwd chemin_absolu_Documents en remplaant chemin_absolu_Documents

par le chemin absolu de votre dossier Documents. Appuyer sur la touche Entre. Se placer dans son rpertoire Documents. Changer les droits daccs du fichier copi (rwx pour tous).

Question 5 : Expliquez le rsultat obtenu en vrifiant entre autres le nom du propritaire du fichier. A.III.3. Edition et manipulation de rpertoires et de fichiers Le tableau 1 rassemble une liste de commandes qui vous permettent de manipuler les rpertoires et les fichiers partir de la console. Commande Explication
Pwd ls [options] cd path_repertoire Affiche le chemin du rpertoire courant. Liste le nom des fichiers. Se place dans le rpertoire indiqu par le path_repertoire. Le chemin peut tre donn en relatif ou absolu. On peut galement utiliser les symboles suivants : - Le symbole . reprsente le rpertoire courant. - Le symbole .. reprsente le rpertoire parent. - Le symbole ~ reprsente le rpertoire daccueil. Cre un rpertoire nomm nom_rep dans le rpertoire courant. Supprime le rpertoire nomm nom_rep. Celui-ci doit tre vide. Supprime le rpertoire avec tous les fichiers et rpertoires quil contient. Cre un fichier vide nomm nom_fic sil nexiste pas, modifie sa date daccs sinon. Lance lditeur Kate en ouvrant le fichier fichier.c sil existe, ou le cre sil nexiste pas. Attention, il vous faut le sauvegarder si vous souhaitez le conserver. Le symbole & permet dexcuter Kate en arrire-plan tout en gardant la main sur le terminal. Affiche le contenu du fichier nomm nom_fic en mode droulant. Affiche les n premires lignes du fichier nomm nom_fic. Affiche les n dernires lignes du fichier nomm nom_fic. Copie le contenu du fichier dsign par path_fic1 dans le fichier dsign par path_fic2, en lcrasant au passage sil existait. Dplace le fichier dsign par path_fic1 lendroit dsign par path_fic2. Si le rpertoire de destination est identique au rpertoire initial, le fichier est renomm. Supprime le fichier dsign par nom_fic.

mkdir nom_rep rmdir nom_rep rm rf nom_rep touch nom_fic kate fichier.c &

cat nom_fic head n nom_fic tail n nom_fic cp path_fic1 path_fic2 mv path_fic1 path_fic2

rm nom_fic

Tableau 1: Edition et manipulation des rpertoires et fichiers

Tip 5 : Certains caractres ne sont pas autoriss dans le nom du fichier. Notamment le caractre espace, accept dans les noms de fichiers sous Windows ou Mac OS, joue le rle de sparateur sous UNIX (il spare commande, options et paramtres les uns des autres). En rgle gnrale, il est prfrable de se limiter aux caractres alphabtiques, numriques ainsi que - et _. Tip 6 : Les processus lancs par un utilisateur sont lis au terminal depuis lequel ils ont t excuts, et lutilisateur qui les a crs. En particulier, une application lance partir dun terminal est lie ce terminal. Si on ferme le terminal, lapplication sarrte aussi. Le symbole & place la fin de la commande permet de faire tourner lapplication en arrire-plan. Les processus lancs en arrire-plan acquirent une indpendance vis vis du terminal depuis lequel ils ont t lancs: ils sexcutent alors

8/12

1AB

Langage C

2013-2014

sans intervention de lutilisateur et sans que celui-ci nait besoin dattendre la fin de leur excution. On peut ainsi lancer plusieurs applications partir dune mme console, tout en gardant la main sur celle-ci. Tip 7 : Le caractre * permet de remplacer tout ou partie dune chane de caractres. Par exemple, la commande rm *.txt permet deffacer tous les fichiers qui ont lextension txt. La commande ls | grep pass* permet de slectionner les fichiers dbutant par pass, la commande ls | grep *ion ceux qui finissent par ion. Do it 12 : Manipuler rpertoires et fichiers.
Se placer dans son rpertoire personnel Documents. Crer un rpertoire nomm test. Copier dans ce rpertoire le fichier passwd du rpertoire /etc. Se placer dans le rpertoire test. Renommer le fichier passwd en CopieMotDePasse. Crer un rpertoire nomm sauvegarde. Afficher le contenu dtaill du rpertoire test. Afficher le contenu du fichier CopieMotDePasse dans le terminal. Supprimer le rpertoire test.

Do it 13 : Interprteur de commandes.
Voici une session de terminal dans lequel lutilisateur a effectu quelques commandes. Les lignes commenant par $ indique une commande, les lignes sans $ sont les rsultats obtenus. Complter les 6 trous sans laide de lordinateur. Attention, il faut parfois lire la suite pour pouvoir complter un trou plac antrieurement. Crer le contexte ncessaire dans votre rpertoire personnel et tester votre solution. $ pwd /users/b/byakkuch/Documents $ ls -F corbeau.txt pascal/ $ cp corbeau.txt pascal $ ls pascal bonjour.txt ___1___ toto.txt $ mkdir textes $ ls -F ___2___ $ mv pascal/renard.txt textes ___3___ $ mv ___4___ textes/renard.txt $ ls -F pascal/ textes/ $ cd pascal $ ___5___ $ ls bonjour.txt toto.txt $ ls ___6___ corbeau.txt renard.txt

A.IV. -

Pour consolider et aller plus loin Vous pouvez lire dans le polycopi les parties concernant linterprteur de commandes SHELL (7.4 p.112) et linterprteur de commandes CSHELL (7.5 p.115). Pour progresser, le mieux serait dinstaller un Linux sur son ordinateur. La distribution Ubuntu est peut-tre la plus simple pour un dbutant. Vous pouvez installer Ubuntu comme un OS fonctionnant part entire, ou utiliser une machine virtuelle (VirtualBox) qui est une solution idale pour un dbutant. Le site du zro est un trs bon site comportant de nombreux cours et tutoriaux. Vous pouvez vous y rfrer et travailler avec. Pour le chapitre sur Linux en particulier, une partie concerne justement linstallation dUbuntu en OS fonctionnel ou en machine virtuelle. Vous pouvez suivre le lien suivant : http://www.siteduzero.com/tutoriel-3-12827-reprenez-le-controle-a-l-aide-de-linux.html

9/12

1AB

Langage C

2013-2014

Tip 8 : La virtualisation est une technique de plus en plus rpandue en informatique : cela consiste faire fonctionner un ordinateur virtuel dans votre ordinateur. Imaginez : cela vous permet de lancer Linux l'intrieur d'une fentre Windows ou Windows l'intrieur d'une fentre Linux, voire pourquoi pas Linux dans une fentre Linux ! La virtualisation peut sembler assez impressionnante et complexe, mais elle est devenue accessible au grand public ces dernires annes. Le gros avantage de cette technique est que Linux sera isol dans la machine virtuelle : il ne risque absolument pas d'altrer le bon fonctionnement de Windows. Une technique rserver ceux qui souhaitent tester Linux sans aucun risque ! (Source : Site du Zro) Pour terminer cette partie, si linterface graphique a votre prfrence, il est bien entendu hors de question de sen passer ! Vous pouvez utiliser le terminal a minima dans la suite lorsquil sagira de compilation et dexcution. Sil y a une chose bien retenir au niveau du terminal, cest de savoir se situer et de se placer dans le bon rpertoire pour lancer les commandes sans quoi, vous risquez de tomber souvent sur Aucun fichier ou dossier de ce type ou No such file or directory pour les anglophones.

B. Environnement de dveloppement
Nous allons passer maintenant la prsentation des outils indispensables dont vous vous servirez pour coder en langage C. Nous mettrons de ct trois outils indispensables prsents dans le prochain TD que sont le crayon, la gomme et une feuille de papier. Si lon se reporte aux diffrentes phases de programmation (postrieures la phase de rflexion crayon-gomme-papier) prsentes la page 11 du polycopi, il y a galement trois outils vous prsenter. B.I. Lditeur de texte Cest dans celui-ci que vous allez crire vos lignes de code en langage C. Bien quun simple bloc-notes suffise, nous allons utiliser Geany, un diteur plus volu proposant quelques fonctionnalits utiles. Do it 14 : Lancer lditeur de texte.
Ouvrir lditeur de texte. Vous pouvez utiliser le menu de linterface graphique ou le lancer partir dun terminal. Dans ce cas, noubliez pas de le lancer en arrire-plan pour viter de bloquer votre terminal.


Figure 8: Editeur Geany

10/12

1AB

Langage C

2013-2014

Sur la figure 8, vous pouvez admirer les nombreuses fonctionnalits qui vous seront utiles pour programmer : - coloration syntaxique - diteur de texte et terminal dans une mme fentre - numrotation des lignes - dfinition des symboles (noms des fonctions, macros) Tip 9 : La coloration syntaxique napparat que lorsque le fichier est sauvegard avec une extension .c. Do it 15 : Ecrire son premier code.
Enregistrer votre fichier sans titre en lui donnant une extension .c dans un rpertoire que vous aurez cr prcdemment. Recopier le code suivant dans le fichier et sauvegarder #include <stdio.h> #define ANNEE 2013 nouveau. int main(void){ int i; for(i=0;i<ANNEE;i++){ printf(coucou\n); } return 0; }

B.II.

Le compilateur gcc

Une fois vos instructions sauvegardes, ltape suivante est lutilisation du compilateur. Nous ferons appel au compilateur gcc. Par dfaut, celui-ci effectue quatre oprations : - Pr-processing : cette tape consiste interprter les directives du pr-processeur (commenant par #... comme #include ou #define) et remplacer toutes les macros prsentes dans leur code par leurs valeurs. - Compilation : cette tape vrifie la syntaxe de vos instructions et les transforme en langage dassemblage spcifique la machine sur laquelle vous compilez. - Assemblage : Sil ny a pas derreur, cette tape gnre le code machine partir du fichier gnr prcdemment. Le fichier gnr est un fichier objet. - Edition de liens : Ldition de liens lie votre fichier objet aux ressources (librairies) ncessaires au bon fonctionnement de votre programme et en fait un programme excutable. Do it 16 : Connatre les options du compilateur gcc.
Ouvrir un terminal et consulter le manuel de gcc. Reprer loption permettant de spcifier le nom du fichier de sortie.

Do it 17 : Compiler son premier code.


Cliquer sur longle Terminal de Geany. Se placer dans le rpertoire o se trouve votre fichier nom_fichier.c. Compiler votre fichier nom_fichier.c en utilisant gcc et en remplaant le nom du fichier par le vtre (!). Loption o permet de dfinir le nom du fichier excutable gnr. Corriger les ventuelles fautes de syntaxe, et recompiler. Dans le terminal de Geany, rentrer la ligne : gcc nom_fichier.c o nom_fichier.o

11/12

1AB

Langage C

2013-2014

Do it 18 : Regarder le fichier gnr par le pr-processing.


Recompiler votre fichier nom_fichier.c en utilisant gcc Dans le terminal de Geany, rentrer la ligne : gcc E nom_fichier.c o nom_fichier.e avec loption -E. Regarder le fichier nom_fichier.e gnr dans un diteur de texte.

Question 6 : Reprez le rsultat de #include <stdio.h>. Retrouvez vos lignes de code. Que constatez-vous ? Do it 19 : Regarder le fichier gnr par ltape de compilation.
Recompiler votre fichier nom_fichier.c en utilisant gcc Dans le terminal de Geany, rentrer la ligne : gcc S nom_fichier.c o nom_fichier.s et loption -S. Regarder le fichier nom_fichier.s gnr dans un diteur de texte.

Question 7 : Reprez des instructions arithmtiques de base. Do it 20 : Excuter son programme.


Excuter votre programme Dans le terminal de Geany, rentrer la ligne : ./nom_fichier.o

Tip 10 : Le ./ qui se situe avant votre programme excutable est une notion trs importante. En effet, le ./ donne la localisation du rpertoire actuel. Lorsquon tape une commande dans le terminal pour lancer un processus, le systme recherche dans les chemins PREDEFINIS dans une variable denvironnement si cette commande existe. Par dfaut, le chemin de votre rpertoire nest pas dfini dans cette variable denvironnement. Donc pour excuter votre programme, vous devez lui spcifier o il doit le trouver. Il est dconseill de rajouter le ./ dans la variable denvironnement afin de sassurer que lutilisateur est conscience de bien lancer le programme qui se situe dans le rpertoire courant et non un autre. B.III. Le debugger ddd (Data Display Debugger)

Lobjectif du debugger est de dceler les erreurs de type algorithmiques dun programme. En effet, le succs la compilation dun programme nassure pas que celui-ci va fonctionner tel quon le souhaite. Par exemple, un programme donnant le maximum dune srie de nombres peut se compiler sans erreurs, mais si lobjectif tait de dterminer le minimum, on naurait pas rpondu au cahier des charges.

Ainsi lobjectif du debugger tel que ddd est de permettre de visualiser ce quil se passe dans un programme pendant son excution afin de cibler les instructions qui ne donnent pas le rsultat escompt. Lutilisation du debugger sera vu dans un prochain TD, nous nous arrterons ici pour le moment. Conclusion
Ce TP vous a permis de prendre connaissance avec le systme dexploitation Linux ainsi que lenvironnement de programmation. Le prochain TP prsentera les outils ncessaires la rsolution dun problme ou dun cahier des charges donns.

12/12