“/ usr / bin / ld:找不到库”

时间:2012-05-08 16:28:55

标签: gcc linker fortran ld gfortran

这是我第一次尝试使用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

我有什么办法可以解决这个错误吗?我应该尝试其他编译器吗?

2 个答案:

答案 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”,那么这可能就是您的链接器无法找到它的原因。