"/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" , возможно, поэтому ваш компоновщик не может его найти.