Cliquer ici pour imprimer

Makefile, Compilation séparée et bibliothèque graphics.h

Le but de la séance est de se familiariser avec la compilation séparée, l'utilisation de la commande make et du fichier Makfile, et de découvrir une bibliothèque permettant de dessiner dans une fenetre graphique.

Compilation séparée

Lire les slides 6 à 18 de ce document. Recopiez les exemples et testez la compilation séparée.

Lire ce tutoriel au moins jusqu'à l'étape 7 incluse et écrivez un makefile permettant de compiler l'exemple des slide 12-13 du premier document avec la commande make. Lire veut dire lire et comprendre et testez les exemples fournis.

La bibliothèque graphics.h

Pour notre mini projet, nous allons avoir besoin d'afficher des éléments dans une fenetre graphique. Pour cela nous allons utiliser une bibliothèque très simple, graphics.h.

Cette bibliothèque a été écrite par Xavier Leroy pour le langage Caml. Elle a été adaptée par Christophe Prieur.

Elle devrait fonctionner sur tout système Unix (Linux, FreeBSD, OpenBSD, MacOS X...)

Récupérer et installer la bibliothèque

  • Téléchargez l'archive.
  • Décompressez-la avec la commande tar xzf graphics.tar.gz
  • Placez vous dans le répertoire créé appelé Libgraphics et tapez les commandes make puis make test (vous pouvez ouvrir le Makefile pour voir ce que cela fait...)
  • Lancer la commande ./test, cela devrait ouvrir une fenetre dans laquelle un hexagone est affiché
  • Pourquoi la commande make install ne fonctionne pas ?
  • Créez à la racine de votre compte un repertoire lib et un repertoire include puis copier dans lib/ le fichier libgraphics.a et dans include/ le fichier graphics.h

Pour compiler des programmes qui utilisent la bibliothèque, il vous faudra désormais rajouter des options.

  • Effacez tous les autres fichiers issus de l'archive sauf le fichier test.c
  • Essayez la commande de compilation gcc -c test.c : ca ne marche pas car gcc ne trouve pas le fichier graphics.h. Il faudra taper gcc -c test.c -I $HOME/include/. Essayez.
  • Essayez maintenant la commande d'édition de liens gcc test.o : ca ne marche pas car gcc ne trouve pas les fonctions gr_... de la bibliothèque. Il faut pour cela rajouter l'option -lgraphics pour qu'il sache qu'il faut qu'il utilise une bibliothèqe dynamique appellée graphics.
  • Essayez... ca ne marche toujours pas. Cette fois il comprend qu'il faut chercher la bibliothèque, mais ne sait pas où elle se trouve. Il faut rajouter l'option -L $HOME/lib/.
  • Essayez... ca ne marche pas ! mais cette fois les fonction qu'il ne trouve pas commencent toutes par X. Ce sont les fonctions de dessin de la bibliothèque du système X11, utilisées par la bibliothèque graphics. Pour lui dire qu'il faut faire un lien dynamique avec cette bibliothèque il faut ajouter l'option -lX11
  • La commande complète est donc gcc test.o -lgraphics -L lib/ -lX11. Ca devrait marcher...

Pour la suite des exercices qui utiliseront cette bibliothèque, vous utiliserez évidemment un fichier Makefile permettant de faire tout ca simplement en utilisant la commande make.

Récréation

Ouvrez le fichier graphics.h et regardez un peu toutes les fonctions a votre disposition. Testez les fonctions des catégories "ouverture de la fenetre...", "Primitives de dessin", "Remplissage", "couleurs" et essayez d'afficher dans une fenetre une scene représentant une maison à toit rouge, avec une porte marron et un soleil jaune (vous pouvez etre plus créatif si vous voulez...).

Une documentation est disponible à cette adresse.