Page suivantePage pr�c�denteTable des mati�res

5. Programmer

Programmer sous Linux est beaucoup plus agr�able : il existe un grand nombre d'outils qui rendent la programmation plus facile et plus rapide. Par exemple, la torture qu'est le cycle �dition, sauvegarde, sortie de l'�diteur, compilation, r��dition, etc. peut �tre raccourci en utilisant des �diteurs comme emacs ou jed, comme nous l'avons vu au dessus.

5.1 Fortran

Il n'y a pas de r�elle diff�rence pour le fortran, mais sachez qu'au moment o� j'�cris ces lignes, les compilateurs (libres) ne sont pas totalement compatibles avec ceux de VMS ; attendez-vous � quelques probl�mes mineurs (en fait, le compilateur de VMS utilise des extensions qui ne sont pas standard). Jetez un oeil � /usr/doc/g77/DOC ou /usr/doc/f2c/d2c.ps pour plus de d�tails.

Votre administrateur a sans doute install� soit le compilateur natif g77 (bien, mais, au jour de la version 0.5.21, toujours pas parfaitement compatible avec le Fortran de DEC), soit le traducteur de Fortran en C, f2c, et un des ses front-ends qui font de lui une imitation de compilateur natif. D'apr�s mon exp�rience, le paquetage yaf77 est celui qui donne les meilleurs r�sultats.

Pour compiler un source en Fortran avec g77, �ditez le et sauvez le avec l'extension .f, et faites

$ g77 monprog.f

Cela va cr�er par d�faut un ex�cutable appel� a.out (vous n'avez pas � effectuer les liens). Pour donner � l'ex�cutable un nom diff�rent et faire quelques optimisations :

$ g77 -O2 -o monprog monprog.f

M�fiez-vous des optimisations ! Demandez � votre administrateur syst�me de lire la documentation fournie avec le compilateur et de vous dire s'il y a des probl�mes.

Pour compiler une sous-routine :

$ g77 -c masub.f

Un fichier masub.o sera cr��. Pour lier cette sous-routine � un programme, vous devrez faire

$ g77 -o monprog monprog.f masub.o

Si vous avez plusieurs sous-routines externes et que vous voulez cr�er une biblioth�que, faites

$ cd sousroutines/
$ cat *f> mabib.f ; g77 -c mabib.f

Le fichier mabib.o cr�� pourra alors �tre li� � vos programmes.

Pour finir, pour lier une biblioth�que externe appel�e, disons, liblambda.so , utilisez

$ g77 -o monprog monprog.f -llambda

Si vous avez f2c, vous n'aurez qu'� utiliser f77 ou fort77 � la place de g77.

Un autre outil de programmation utile est make. Il est d�crit ci-dessous.

5.2 Utiliser make

make est un outil pour g�rer la compilation de programmes divis�s en plusieurs fichiers sources.

Supposons que vous ayez des fichiers sources contenant vos routines appel�s fichier_1.f, fichier_2.f et fichier_3.f, et un fichier source principal qui utilise ces routines appel� monprog.f. Si vous compilez votre programme � la main, quand vous modifierez un fichier source vous allez devoir chercher quel fichier d�pend de quel fichier, et les recompiler en tenant compte des d�pendances.

Plut�t que de devenir fou, je vous propose d'�crire un makefile. C'est un fichier texte qui contient les d�pendances entre les sources : quand un source est modifi�, seuls les sources qui d�pendent du fichier modifi� seront recompil�es.

Dans notre cas, le makefile ressemblerait � ceci :


# Voici le Makefile
# Attention : appuyez sur la touche tabulation quand � <TAB> �
# est �crit ! C'est tr�s important : n'utilisez pas d'espace � la place.
monprog: monprog.o fichier_1.o fichier_2.o fichier_3.o
<TAB>g77 -o monprog monprog.o fichier_1.o fichier_2.o fichier_3.o
# monprog d�pend de quatre fichiers objets
monprog.o: monprog.f
<TAB>g77 -c monprog.f
# monprog.o d�pend de son fichier source
fichier_1.o: fichier_1.f
<TAB>g77 -c fichier_1.f
# fichier_1.o d�pend de son fichier source
fichier_2.o: fichier_2.f fichier_1.o
<TAB>g77 -c fichier_2.f fichier_1.o
# fichier_2.o d�pend de son fichier source et d'un fichier objet
fichier_3.o: fichier_3.f fichier_2.o
<TAB>g77 -c fichier_3.f fichier_2.o
# fichier_3.o d�pend de son fichier source et d'un fichier objet
# fin du Makefile

Enregistrez ce fichier sous le nom Makefile et tapez make pour compiler votre programme. Vous pouvez aussi l'appeler monprog.mak et taper make -f monprog.mak. Et bien s�r, si vous voulez en savoir plus : info make.

5.3 Scripts shell

Les scripts shell sont les �quivalents des fichiers de commandes de VMS et, pour changer, sont beaucoup plus puissants.

Pour �crire un script, tout ce que vous avez � faire est d'�crire un fichier au format ASCII contenant les commandes, l'enregistrer et le rendre ex�cutable (chmod +x fichier). Pour le lancer, tapez son nom (pr�c�d� de ./ s'il n'est pas dans le path).

�crire des scripts avec bash est un sujet tellement vaste qu'il n�cessiterait un livre entier, et je ne ne vais pas m'attarder sur le sujet. Je vais juste vous donner un exemple plus ou moins compr�hensible et, je l'esp�re, utile, � partir duquel vous pourrez comprendre quelques r�gles de base.


#!/bin/sh
# exemple.sh
# Je suis un commentaire.
# Ne modifiez pas la premi�re ligne, elle doit �tre pr�sente.
echo "Ce syst�me est : `uname -a`" # utilise la sortie de la commande
echo "Mon nom est $0" # variable interne
echo "Vous m'avez donn� les $# param�tres suivants : "$*
echo "Le premier param�tre est : "$1
echo -n "Quel est votre nom ? " ; read votre_name
echo remarquez la diff�rence : "Salut $votre_name" # cit� avec "
echo remarquez la diff�rence : 'Salut $votre_name' # cit� avec '
REPS=0 ; FICHIERS=0
for fichier in `ls .` ; do
 if [ -d ${fichier} ] ; then # si le fichier est un r�pertoire
 REPS=`expr $REPS + 1`  # REPS = REPS + 1
 elif [ -f ${fichier} ] ; then
 FICHIER=`expr $FICHIER + 1`
 fi
 case ${fichier} in
 *.gif|*jpg) echo "${fichier}: fichier graphique" ;;
 *.txt|*.tex) echo "${fichier}: fichier texte" ;;
 *.c|*.f|*.for) echo "${fichier}: fichier source" ;;
 *) echo "${fichier}: fichier quelconque" ;;
 esac
done
echo "Il y a ${REPS} r�pertoires et ${FICHIERS} fichiers"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # valeur de sortie de la derni�re commande
 echo "ZxY--!!!WKW n'a pas �t� trouv�"
fi
echo "�a suffit... tapez 'man bash' si vous voulez plus d'informations."
echo "Note du traducteur : 'info bash' est plus complet."

5.4 C

Linux est un excellent environnement pour la programmation en C. Si vous connaissez le C, voici quelques conseils pour vous d�brouiller sous Linux. Pour compiler le c�l�bre hello.c vous utiliserez le compilateur gcc, qui est standard dans le monde de Linux et qui a la m�me syntaxe que g77 :

$ gcc -O2 -o hello hello.c

Pour lier une biblioth�que � un programme, ajoutez l'option -lbiblioth�que. Par exemple pour lier la biblioth�que math et optimiser faites

$ gcc -O2 -o mathprog mathprog.c -lm

(L'option -lbiblioth�que force gcc � lier la biblioth�que /usr/lib/libbiblioth�que.a ; ainsi -lm lie /usr/lib/libm.a.)

Quand votre programme est divis� en plusieurs fichiers sources, vous aurez besoin du programme make d�crit juste au dessus.

Vous pouvez obtenir de l'aide sur quelques fonctions de la libc dans la section 3 des pages man. Par exemple :

$ man 3 printf

Il existe beaucoup de biblioth�ques disponible. Parmi les premi�res que vous voudrez probablement utiliser, il y a ncurses, qui permet de g�rer quelques effets du mode texte et svgalib pour faire du graphisme.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:25