TL d’introduction à la programmation C/C++
avec gcc sous Linux et Windows

 

 

1      Préambule

 

Pour ce TL vous utiliserez les tutoriels suivants :

·        Tutoriel sur l'interpréteur de commande Bash

·        Tutoriel sur la compilation des programmes C++

·        Tutoriel sur les Makefile

·        Tutoriel sur l'installation de packages sous Windows

·        Tutoriel sur CodeBlocks

 

2      Un premier programme en C++

 

·        Aller dans Application->Outils système->Terminal pour ouvrir un terminal X (ou xterm). La fenêtre suivante apparaît :

 

 

C’est une fenêtre X Window dans laquelle est lancé l’interpréteur de commande bash.

 

·         Créer le répertoire travail en tapant la commande ci-dessous dans le terminal X :

Ø  mkdir travail

 

·         Se déplacer dans le répertoire de travail en tapant la commande :

Ø  cd travail

 

·         Lancer un éditeur de texte (Xemacs, gedit, …) et saisir les lignes suivantes :

 

#include <iostream>

 

using namespace std;

 

int  main(int argc, char **argv)

{

  cout << "Mon premier programme C++\n";

 

  return 0;

}

 

·         Enregistrer ce programme dans le fichier programme1.cpp

 

·         Compiler le fichier programme1.cpp en vous aidant du tutoriel sur la compilation des programmes C++

 

·         Exécuter le programme programme1.

 

3      Compilation séparée

 

·         Enregistrer les fichiers convert_image.cpp et paysage.jpg dans le répertoire travail

 

·         Afficher la liste des fichiers ayant une extension .cpp  présents dans le répertoire travail

 

·         Compiler le fichier  convert_image.cpp et créer le fichier exécutable convert_image .

 

·         Exécuter le programme convert_image.

 

·         A l’exécution, le programme plante car il contient une erreur. On utilise le debugger gdb pour trouver cette erreur. Compiler le programme en mode « debug » puis lancer le debugger gdb. On donne ci-dessous quelques commandes de gdb :

-          run ou r                           : lance le programme,

-          break line_number : place un point d’arrêt à la ligne line_number,

-          next ou n                         : exécute l’instruction suivante,

-          list ou l                         : affiche une partie du code source du programme.

 

Pour obtenir la liste des commandes disponibles sous gdb, taper « help ».

 

·         Compiler le fichier convert_image.cpp en utilisant pkg-config

 

·         Découper le fichier convert_image.cpp en 3 fichiers : un fichier main.cpp qui contient la définition de la fonction main, un fichier convert.cpp qui contient les fonctions read_image, write_image et grayscale_conversion et un fichier convert.h qui contient la déclaration des fonctions read_image, write_image et grayscale_conversion.

 

·         Compiler les fichiers main.cpp et convert.cpp et créer les fichiers main.o et convert.o. Faire ensuite l’édition de lien des fichiers main.o et convert.o pour créer le fichier exécutable convert_image.

 

·         Exécuter le programme convert_image

 

·         Ecrire un fichier Makefile afin de créer le fichier exécutable convert_image à partir des fichiers main.cpp, convert.cpp et convert.h. Taper ensuite la commande :

Ø  make

 

 

·         On souhaite calculer l'entropie apparente de l’image en niveaux de gris. On utilise pour cela l’expression suivante :

N est le nombre de niveaux de gris présents dans l’image et  est la proportion  de pixels de l’image ayant le niveau de gris i. Définir dans le fichier convert.cpp la fonction compute_entropy qui permet de calculer cette expression. Vous utiliserez la fonction log de la librairie mathématique. Recompiler le programme à l’aide de la commande make.

 

·         Créer la librairie libconvert.so à partir du fichier convert.o. Modifier le fichier Makefile pour que le fichier exécutable convert_image soit généré à partir des fichiers main.cpp, convert.h et libconvert.so. Analyser le contenu de la librairie libconvert.so. Consulter le tutoriel sur la compilation des programmes C++.

4      Windows

 

L’ensemble de ces exercices peuvent être repris sous Windows depuis une invite de commande (cmd). On pourra constater les différences entre Linux et Windows (par exemple le nom du programme exécutable).

On adaptera le « makefile » en conséquence (rajouter l’extension « .exe » au nom du fichier exécutable).

 

On pourra également faire des exemples de fichier « makefile » valables pour les deux environnements (voir le tutoriel sur l'installation de packages sous Windows à partir de la page 12).

 

5      Environnement de développement intégré

 

Reprendre l’ensemble des exercices sous environnement de développement intégré « Code::Blocks ». Vous pouvez consulter le tutoriel sur Codeblocks.

Les points à aborder sont :

-          création du projet

-          compilation et exécution

-          déverminage (débogage)