Compilation et exécution d'un programme

Considérons le programme suivant :

/*** fichier cercle.c ***/

#include <stdio.h>

#define M_PI 3.141592;


double perimetre(double rayon)
{  return 2 * M_PI * rayon;
}


double superficie(double rayon);
{  return M_PI * rayon * rayon;
}


int main(void)
{  double r, p;
   
   printf("\nentrer le rayon\n")
   while (scanf("%lf", &r) == 1)
   {  p = perimeter(r);
      s = superficie(r);
      printf("rayon : %10.2f   perimetre : %10.2f   superficie : %10.2f\n",
        r, p, s);
      printf("\nentrer le rayon\n);
   }
   return 0;
}

/*** fin fichier cercle.c ***/

Exercice 1.

Sauvegarder le programme dans un fichier cercle.c. Compiler à l'aide de la commande

gcc -Wall cercle.c -o cercle
Observer les messages d'erreur et d'avertissement du compilateur. Corriger les « fautes de frappe ».

Exercice 2.

Lancer l'exécutable. Entrer quelques valeurs (utiliser ctrl-D pour terminer).

Exercice 3.

La constante M_PI est déjà définie dans le fichier entête math.h. Utiliser cette définition.

Exercice 4.

Créer un fichier texte contenant quelques valeurs de r. Faire le programme lire son entrée depuis ce fichier.

Exercice 5.

Sauvegarder la sortie du programme dans un fichier.

 


 

Les quatre étapes de traitement - récapitulatif
étapecommandefichier résultat
prétraitement gcc -E cercle.c -o cercle.i cercle.i
compilation gcc -S cercle.i cercle.s
assemblage gcc -c cercle.s cercle.o
édition des liens gcc cercle.o -o cercle cercle

 


 

Exercice 6.

Exécuter les deux premières étapes de traitement un par un. Ouvrir les fichiers cercle.i et cercle.s dans un éditeur de texte. Regarder vers la fin du fichier cercle.i. Que s'est-il passé avec la constante M_PI ?

Exercice 7.

Exécuter les deux dernières étapes. Les fichiers cercle.o et cercle sont-ils « lisibles » ? Inspecter ces fichiers à l'aide de la commande nm.