"/usr/bin/ld: невозможно найти библиотеку"

Это моя первая попытка скомпилировать код FORTRAN с помощью make файла. ОС - 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

Есть ли что-нибудь, что я могу сделать, чтобы исправить эту ошибку? Должен ли я попробовать другие компиляторы?

Ответ 1

Поскольку ../libanne4.0/lib - относительный путь, вы можете попробовать изменить его на абсолютный.

Также вы можете проверить, имеет ли процесс компоновщика права доступа и чтения libs.


Обновление. Чтобы компоновщик нашел библиотеку, указанную с помощью опции -l<name>, имя libray должно быть lib<name>.[a|so], а параметр -L должен указывать путь, в котором находится библиотека.

-L необходимо выполнить его -L вариант (ы).

Можно было указать -L и/или -L несколько раз.

Ответ 2

Что-то не так с именем "adwdmlib.a" . Флаг привязки "-l adwdm" подскажет компилятору ожидать файл lib с именем "libadwdm.a", а не "adwdmlib.a" . Это полезно или актуально? Если ваше имя библиотеки "adwdmlib.a" , возможно, поэтому ваш компоновщик не может его найти.