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
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).
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.
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.
Ces références insatisfaites peuvent être soit des fonctions systèmes (librairies X11 ...), soit des procédures de Modulef.
#define proc(x) x
#define proc(x) name2(x,_)
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,
Pour faire tourner Fortran 3D avec Open Windows, il faut :
~/.Xdefaults
:
OpenWindows.FocusLenience: True OpenWindows.SetInput: followmouseSinon, les caractères tapés dans la fenêtre graphique seront lus par la fenêtre alphanumérique.
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 :
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.
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
SunCORE n'est plus maintenu par Sun, cependant vous pouvez encore, si vous le désirez, utiliser le driver suncore, pour cela vous devez :
% su root % cd /usr/oldEditer le fichier install_from_old et effectuez la modification suivante :
# Apres : SYNC="sync" # Ajouter : MKDIR="mkdir"
% install_from_old SunCORE
/* ... */
(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.
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.