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.
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.
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
.
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."
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.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:25