【发布时间】:2012-05-17 04:05:45
【问题描述】:
这是我第一次尝试使用 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
有什么办法可以解决这个错误吗?我应该尝试其他编译器吗?
【问题讨论】:
-
我要检查的第一件事是你是否真的有
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 /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的内容是因为我将链接器设置为使用静态链接作为最后一件事,所以这将其更改为使用动态链接。
标签: gcc linker fortran ld gfortran