11

这是我第一次尝试使用 makefile 编译 FORTRAN 代码。操作系统是 Ubuntu 12.04 LTS 64 位。我遇到了以下错误:

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

makefile 中的关键元素是:

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

我能做些什么来解决这个错误吗?我应该尝试其他编译器吗?

4

2 回答 2

10

作为../libanne4.0/lib相对路径,您可以尝试将其更改为绝对路径。

您还可以检查链接器进程是否有权访问和读取库。


更新:要让链接器找到使用选项指定的库,库-l<name>的名称应该是lib<name>.[a|so],参数-L应该指向库所在的路径。

-L需要先于它的-l选项。

可以指定-l和/或-L多次。

于 2012-05-08T16:45:42.043 回答
1

名称“adwdmlib.a”有问题。链接标志“-l adwdm”将告诉编译器期望一个名为“libadwdm.a”的lib文件,而不是“adwdmlib.a”。这有帮助或相关吗?如果您的库名称是“adwdmlib.a”,这可能就是您的链接器找不到它的原因。

于 2012-05-08T21:42:19.543 回答