Professional Documents
Culture Documents
Langage C
2013-2014
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
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.
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.
A.I.2.
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
:
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.
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.
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.
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.
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.
7/12
1AB
Langage C
2013-2014
Taper
la
requte
suivante
dans
le
terminal:
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
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.
11/12
1AB
Langage C
2013-2014
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.
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