Gcc &引用/usr/bin/ld:找不到库“;

Gcc &引用/usr/bin/ld:找不到库“;,gcc,linker,fortran,ld,gfortran,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 lambert

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

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

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

您还可以检查链接器进程是否具有访问和读取LIB的权限


更新:要让链接器使用选项
-l
查找指定的库,库的名称应为
lib。[a | so]
,并且
-l
的参数应指向库所在的路径

-L
需要处理它的
-L
选项


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

名称“adwdmlib.a”有问题。链接标志“-l adwdm”将告诉编译器需要一个名为“libadwdm.A”而不是“adwdmlib.A”的lib文件。这是有用的还是相关的?如果你的库名是“adwdmlib.a”,这可能就是你的链接器找不到它的原因。

我要检查的第一件事是你是否真的有
libwdm.so
libadwdm.so
。我假设它们应该在这个
libanne4.0/lib
目录中。是的,
libwdm.a
libadwdm.a
都在那里。哦,静态库。你能在你的makefile中试试这个吗
przm2_LIBS=-L../libanne4.0/lib-Wl,-Bdynamic-lutil-Wl,-Bstatic-lwdm-ladwdm
-我假设
util
libutil.so
(一个共享库),因为它没有抱怨。谢谢你的建议。我试过你的建议。以下是新的输出:
/usr/bin/ld:cannot find-lwdm/usr/bin/ld:cannot find-ladwdm/usr/bin/ld:cannot find-lgcc_s/usr/bin/ld:cannot find-lgcc_s
我认为alk可能是在做什么(可能是路径问题)。能否在
libanne4.0/lib
中显示库的目录列表?另外,将行更改为
przm2_LIBS=-L(path/to/libanne4.0/lib)-Wl,-Bstatic-lwdm-ladwdm-Wl,-Bdynamic-lutil
lgcc_s
内容是因为我将链接器设置为使用静态链接作为最后一件事,所以这会将其更改为使用动态链接。提供了绝对路径,但错误相同。我尝试了
ld adwdmlib.a
并得到以下错误:
ld:warning:找不到输入符号\u start;未设置起始地址
thanksadwdmlib.a是我需要包含的库。根据你修正的L和L规则。这是否意味着
przm2_LIBS=-L../libanne4.0/lib-lwdm-ladwdm-lutil
不起作用,因为这些lib的名称不正确?谢谢您的评论。我试图重命名这些库,但链接器仍然找不到它们。