it-swarm.com.de

"/ usr/bin/ld: Bibliothek kann nicht gefunden werden"

Dies ist mein erster Versuch, FORTRAN-Code mit einem Makefile zu kompilieren. Das Betriebssystem ist Ubuntu 12.04 LTS 64 Bit. Ich bin auf folgende Fehler gestoßen:

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

Das Schlüsselelement im Makefile ist:

przm2_LIBS = -L ../libanne4.0/lib -lwdm -ladwdm -lutil

Kann ich irgendetwas tun, um diesen Fehler zu beheben? Sollte ich andere Compiler ausprobieren?

11
TH339

Da ../libanne4.0/lib ein relativer Pfad ist, können Sie versuchen, ihn in einen absoluten Pfad zu ändern.

Sie können auch prüfen, ob der Linker-Prozess die Rechte zum Zugriff und zum Lesen der Bibliotheken besitzt.


Update: Damit der Linker eine Bibliothek mit der Option -l<name> finden kann, muss der Name der Bibliothek lib<name>.[a|so] sein und der Parameter für -L sollte auf den Pfad zeigen, in dem sich die Bibliothek befindet. 

-L muss die -l-Option (en) vorausgehen. 

Man könnte -l und/oder -L mehrfach angeben.

10
alk

Der Name "adwdmlib.a" stimmt nicht. Ein Verknüpfungsflag "-l adwdm" weist den Compiler an, eine lib-Datei mit dem Namen "libadwdm.a" und nicht "adwdmlib.a" zu erwarten. Ist das hilfreich oder relevant? Wenn Ihr Bibliotheksname "adwdmlib.a" ist, kann Ihr Linker dies wahrscheinlich nicht finden.

1
bob.sacamento