11

Makefile を使用して FORTRAN コードをコンパイルしようとするのはこれが初めてです。OSはUbuntu 12.04 LTS 64bitです。次のエラーが発生しました。

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" は、"adwdmlib.a" ではなく、"libadwdm.a" という名前の lib ファイルを期待するようにコンパイラに指示します。これは役に立ちますか、または関連性がありますか? ライブラリ名が「adwdmlib.a」の場合、リンカーがそれを見つけられない可能性があります。

于 2012-05-08T21:42:19.543 に答える