C'est la première fois que j'essaie de compiler le code FORTRAN à l'aide d'un fichier makefile. Le système d'exploitation est Ubuntu 12.04 LTS 64 bit. J'ai rencontré les erreurs suivantes:
gfortran -o przm3123.exe canopy.o chem.o cnfuns.o cropdate.o datemod.o debug.o debug_cn.o f2kcli.o floatcmp.o furrow.o general.o i_errchk.o infnan.o inivar.o ioluns.o iosubs.o lambertw.o m_readvars.o utils.o wind.o fcscnc.o przm3.o rsexec.o rsinp1.o rsinp2.o rsinp3.o rsmcar.o rsmisc.o rsprz1.o rsprz2.o rsprz3.o rsprzn.o rsutil.o rsvado.o -L ../libanne4.0/lib -lwdm -ladwdm -lutil
/usr/bin/ld: cannot find -lwdm
/usr/bin/ld: cannot find -ladwdm
collect2: ld returned 1 exit status
make: *** [przm3123.exe] Error 1
L'élément clé dans le makefile est:
przm2_LIBS = -L ../libanne4.0/lib -lwdm -ladwdm -lutil
Y a-t-il quelque chose que je puisse faire pour corriger cette erreur? Devrais-je essayer d'autres compilateurs?
Comme ../libanne4.0/lib
est un chemin relatif, vous pouvez essayer de le transformer en chemin absolu.
Aussi, vous pouvez vérifier si le processus de l'éditeur de liens dispose des droits d'accès et de lecture des bibliothèques.
Mise à jour: pour que l'éditeur de liens recherche une bibliothèque spécifiée à l'aide de l'option -l<name>
, le nom de la bibliothèque doit être lib<name>.[a|so]
et le paramètre à -L
doit indiquer le chemin où se trouve la bibliothèque.
-L
doit précéder ses options -l
.
On pourrait spécifier -l
et/ou -L
plusieurs fois.
Il y a quelque chose qui cloche avec le nom "adwdmlib.a". Un indicateur de liaison "-l adwdm" indiquera au compilateur d'attendre un fichier lib nommé "libadwdm.a", et non "adwdmlib.a". Est-ce utile ou pertinent? Si le nom de votre bibliothèque est "adwdmlib.a", c'est probablement pourquoi votre éditeur de liens ne peut pas le trouver.