Modulefpreviousupnextcontents[BIG][Normal][small]
Suiv.: Liste triée des bibliothèques pour Sup.: D Installation sous UNIX Préc.: Exécution du Makefile sur HP-UX Table des matières


Problèmes possibles

Problèmes de compilation des programmes C

Il est fort probable que ce problème soit lié au fichier underscore.h contenu dans la bibliothèque include.
En effet, en fonction du préprocesseur cpp de votre machine, le fichier underscore.h produira ou non un souligné à la fin du nom du sous-programme C.
Pour corriger cette erreur, vous devez modifier la définition de la fonction de concaténation de chaînes de caractères (name2(a,b)) définie dans le fichier underscore.h. Pour cela consultez la documentation sur le préprocesseur cpp.
Les corrections effectuées vous pouvez relancer séparément les compilations des bibliothèques qui avaient posées problèmes ( make nom de la bibliothèque), puis relancez le make pour effectuer les éditions de liens. ( make executables).

Compilation des bibliothèques

 

Message d'erreur

cd //houx/modu/ascii/sta/s/cont ;\
make -f //houx/modu/ascii/sta/s/cont/Makefile\
               CompileDir=//houx/modu/make/Installapollo/cont \
               sourceDir=//houx/modu/ascii/sta/s/cont \
               output=//houx/modu/make/Installapollo/output_compil \
               ListErr=//houx/modu/make/Installapollo/erreur_compil \
               CC="cc"
               CIFLAGS="-W0,-idir,//houx/modu/ascii/sta/s/include"\
 CCFLAGS="-c -W0,-indexl,-pic" \
               F77="f77" F77FLAGS="-c
               -W0,-overlap,dd,dc,-indexl,-pic,-idir,\
//houx/modu/ascii/sta/s/include" \
               AR="ar" ARFLAGS="rv" \
               RANLIB="ranlib" \
               LIB="//houx/modu/apollo/sta/lib/libcont.a"
Make: Expanded macro line is too long.  Stop.
*** Exit 1

Stop.
*** Exit 1

Stop.

Vous devez modifier, dans le fichier M_config contenu dans le répertoire
[4] $MR/make/Install$MM, la valeur de la variable MAXSUB, plus précisément, vous devez diminuer la valeur de cette variable. Par défaut cette variable est initialisée à 330, initialisez la, par exemple, à 250 et relancez la compilation de la bibliothèque qui a posée problème (si le problème subsiste diminuer encore cette valeur).
Changer la valeur de cette variable permet d'éviter d'avoir des lignes de dépendances trop longues : plusieurs Makefile sont créés et utilisés pour compiler la bibliothèque.

Exécution du programme procat

Message d'erreur :

wsifst8# make executables
cd /server1/Modulef/make/Installsun ; f77 -c
-I/server1/Modulef/ascii/\
sta/s/include /server1/Modulef/ascii/sta/s/ppal/procat.f ;\
f77 -Bstatic -o /server1/Modulef/sun/sta/bin/procat procat.o
-L/server1/\
Modulef/sun/sta/lib -lsymo -lutil -lutil_sun -lcore77 -lcore
-lsuntool\
 -lsunwindow -lpixrect -lX11 
/server1/Modulef/ascii/sta/s/ppal/procat.f:
 MAIN procat:
rm -f /server1/Modulef/make/Installsun/procat.o
rm -f /server1/Modulef/sun/sta/etc/proc.direct 
/server1/Modulef/sun/sta/bin/procat
GETENVS : VARIABLE NON DEFINIE OU VIDE :
MR
  80  -1
abort: called
*** Abort - core dumped
make: Fatal error: Command failed for target `/server1/Modulef/sun/\
sta/etc/proc.direct'
wsifst8#
Il est nécessaire de déclarer de l'environnement courant ( .cshrc ou .profile les variables d'environnement MM, MR et MV aux mêmes valeurs que dans le Makefile, ainsi que la variable USER si ce n'est déjà fait.

Références insatisfaites lors des édition de liens

Ces références insatisfaites peuvent être soit des fonctions systèmes (librairies X11 ...), soit des procédures de Modulef.

Remarque : Si les références insatisfaites sont des procédures Modulef contenus dans le répertoire zzzz_mod et que votre compilateur accepte les références insatisfaites (par exemple le compilateur de HP/apollo) cela ne pose pas de problèmes.

Lorsque vous aurez effectué les modifications nécessaires,

Problèmes sur sun 4

Utilisation d'Open Windows

Pour faire tourner Fortran 3D avec Open Windows, il faut :

  1. que la variable STDLIB contienne -L/usr/openwin/lib -lX11
    Note : Ne mettez pas -lXau dans cette variable, sinon vous aurez un message du type :
    Segmentation fault dans strlen
    lors de l'exécution des programmes principaux,

  2. mettre dans votre fichier ~/.Xdefaults :
    OpenWindows.FocusLenience:      True
    OpenWindows.SetInput:   	followmouse
    
    Sinon, les caractères tapés dans la fenêtre graphique seront lus par la fenêtre alphanumérique.
    Faites man olwm, si vous désirez avoir plus de détails.

Problèmes lors d'une écriture Fortran

Certaines versions des librairies Fortran n'acceptant pas d'écrire des enregistrements de plus de 16 ko, à l'INRIA, avec le système SunOS Release 4.1 et le compilateur Fortran 1.3.1., nous avons dû installer :

  1. le patch décrit ci-dessous,
  2. une librairie libc correcte (voir page gif).
    Si ce n'est pas fait, contacter Sun.

  1. Patch-ID#  100098-02
    Keywords: Fortran records 16kb
    Synopsis: fixes bug in libf77 that aborts on writes >= 16kb records.
    Date:
     
    SunOS release: 4.1
    
    Unbundled Product: Fortran
     
    Unbundled Release: 1.3.1
     
    Topic: 
     
    BugId's fixed with this patch: 1042114
    
    Architectures for which this patch is available: sun3 sun4 sun386i
    
    Obsoleted by: Fortran 1.4
    
    Problem Description: 
    
    	Fortran programs get segmentation violation errors (with core
    	dumps) when writing records of 16kb or greater.  This problem effects 
    	all styles of I/O except list-directed.
    
    	The 1.3.1 RTF mentions I/O records longer than 8k fail unless compiled 
    	with -Bstatic. Even with -Bstatic, records larger than 16k fail.
    
    	This patch basically consists of complete replacements of libF77.
    
    Installation Instructions:
    
    	There are four library parts that need to replace the existing 
    	copies on the system that has the problem.
    
    	If the default location was used to install Fortran, then the 
    	files that need replacing will be;
    
    		/usr/lang/SC0.0/libF77.a
    		/usr/lang/SC0.0/libF77.sa.1.1
    		/usr/lang/SC0.0/libF77.so.1.1
    		/usr/lang/SC0.0/libF77_p.a
    
    	and for Sun4:
    
    		/usr/lang/SC0.0/misalign/libF77.a
    		/usr/lang/SC0.0/misalign/libF77.sa.1.1
    		/usr/lang/SC0.0/misalign/libF77.so.1.1
    		/usr/lang/SC0.0/misalign/libF77_p.a
    
    	If an alternate directory structure was used the file names will 
    	be the same, but the customer will have to no where they installed 
    	Fortran.
    
    	To install the patched library parts, simply rename the four files 
    	shown above and copy the four-file patch into the directory where 
    	the Fortran libraries are located.
    

  2.  

    soleil% cd /usr/lib
    soleil% ls -lg libc.*
    -rw-r--r--  1 root     daemon     658148 Feb  8  1990 libc.a
    -rw-r--r--  1 root     daemon       7996 Jul 25 14:34 libc.sa.1.6
    -rw-r--r--  1 root     daemon     516096 Jul 25 14:18 libc.so.1.6
    

Utilisation du périphérique graphique sun_core

SunCORE n'est plus maintenu par Sun, cependant vous pouvez encore, si vous le désirez, utiliser le driver suncore, pour cela vous devez :

  1. installer SunCORE :
       % su root
       % cd /usr/old
    
    Editer le fichier install_from_old et effectuez la modification suivante :
       # Apres :     SYNC="sync"
       # Ajouter :   MKDIR="mkdir"
    
       % install_from_old SunCORE
    

  2. revoir les droits d'accès du réper<toire /usr/include/f77 et du fichier usercore77.h (sinon le compilateur ne peut pas lire ce fichier).

  3. mettre des C en première colonne du Copyright délimité par /* ... */ (sinon le compilateur fortran signale bien évidemment des erreurs).

Il subsiste alors encore un problème avec SunCORE :
vwsurf.screenname doit obligatoirement rester vide.
Autrefois, en affectant vwsurf.screenname = "/dev/fb" on créait une fenêtre graphique (cf SunCore Reference Manual, Appendix B, View Surface Specification for Window Devices). Apparemment, ceci n'est plus possible, y compris en jouant sur vwsurf.flags. Le seul palliatif est d'appeler gfxtool.

Edition de liens de programmes toutxx et vicoxx :

Message d'erreur :

make PP_toutxx
make -f /usr/local/math/modulef_v93/ascii/sta/s/ppal/Makefile \
/usr/local/math/modulef_v93/sun4/sta/bin/toutxx \
F77="f77" F77FLAGS="-c -ansi -cg87 -i4 -O \
-I/usr/local/math/modulef_v93/ascii/sta/s/include" \
LINK="f77 -Bstatic" STDLIB="-lX11" \
CPPFLAGS="-L/usr/local/math/modulef_v93/sun4/sta/lib" \
F3D1="`cat /usr/local/math/modulef_v93/make/Installsun4/List_f3d1`"\
 F3D2="`cat /usr/local/math/modulef_v93/make/Insta
llsun4/List_f3d2`" \
ZZZZ="zzzz_mod" \
BLAS=blas_mod \
UTIL=u_sun \
ml=/usr/local/math/modulef_v93/sun4/sta/lib
ms=/usr/local/math/modulef_v93/\
ascii/sta/s mi=/usr/local/math/modulef_v93
/make/Installsun4 mb=/usr/local/math/modulef_v93/sun4/sta/bin
cd /usr/local/math/modulef_v93/make/Installsun4 ;  f77 -c -ansi -cg87
-i4 \
-O -I/usr/local/math/modulef_v93/ascii/sta/
s/include  /usr/local/math/modulef_v93/ascii/sta/s/ppal/toutxx.f
/usr/local/math/modulef_v93/ascii/sta/s/ppal/toutxx.f:
 MAIN toutxx:
        force:
        forcel:
        forcth:
        spclel:
        spclrl:
        spclth:
f77 -Bstatic -o /usr/local/math/modulef_v93/sun4/sta/bin/toutxx
/usr/local/math/modulef_v93/\
make/Installsun4/toutxx.o
 -L/usr/local/math/modulef_v93/sun4/sta/lib -lcomp -lnop2 -ltrac
 -lcosd -lflui -lreso -lelas\
 -lresd -lelcp -lresr -lt
her -lela2 -lela3 -lmagn -lnopo -lpoba -lresb -lvis3 -lutsd -lft3d
-lp_lsun4 -lp_script -lp_x11 -l_genera\
 -lft3d -lzzzz_mod -lutii -lblas_mod -lu_sun -lX11
f77: Fatal error in ld: Bus error
Compilation failed
*** Error code 1
make: Fatal error: Command failed for target\
 `/usr/local/math/modulef_v93/sun4/sta/bin/toutxx'
Current working directory /usr/local/math/modulef_v93/make/Installsun4
*** Error code 1
make: Fatal error: Command failed for target `toutxx'

Ce bug a été signalé a Sun, apparemment, on ne peut donner qu'un nombre limité de librairies objets lors de l'édition de liens avec la syntaxe -l<library name> . Pour éviter ce problème il est nécessaire d'utiliser la commande bb elm (cf 10) pour faire l'édition de liens des programmes toutxx et vicoxx.


Modulefpreviousupnextcontents[BIG][Normal][small]
Suiv.: Liste triée des bibliothèques pour Sup.: D Installation sous UNIX Préc.: Exécution du Makefile sur HP-UX Table des matières