这是我第一次尝试使用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
我有什么办法可以解决这个错误吗?我应该尝试其他编译器吗?
答案 0 :(得分:10)
由于../libanne4.0/lib
是相对路径,您可以尝试将其更改为绝对路径。
您还可以检查链接器进程是否有权访问和读取库。
更新:要让链接器找到使用选项-l<name>
指定的库,libray的名称应为lib<name>.[a|so]
,而-L
的参数应指向库的路径位于。
-L
需要先于-l
个选项。
可以多次指定-l
和/或-L
。
答案 1 :(得分:1)
名称“adwdmlib.a”有问题。链接标志“-l adwdm”将告诉编译器期望一个名为“libadwdm.a”的lib文件,而不是“adwdmlib.a”。这有用还是相关?如果您的库名是“adwdmlib.a”,那么这可能就是您的链接器无法找到它的原因。