Ссылка на библиотеку NAG с -lnag
Я пытаюсь скомпилировать мою первую программу, которая использует библиотеку NAG, следующее:
program naginfo
use nag_f77_a_chapter
implicit none
write(*,*) 'Calling NAG identification routine'
write(*,*)
call a00aaf
end program naginfo
Это скопировано из учебника, и они предлагают скомпилировать его со следующим утверждением:
f95 -o naginfo naginfo.f90 -lnag
и они полагают, что это -lnag
ведет компоновщик к библиотеке NAG, но затем я нахожу эту ошибку:
Fatal Error: Can't open module file ‘nag_f77_a_chapter.mod’ for reading at (1): The directory does not exist
Я попытался изменить каталог файлов NAG, чтобы помочь компоновщику найти его.
Как мне получить это для компиляции и ссылки?
1 ответ
Это просто длинное объяснение комментария Франческа.
Флаг -lnag
Добавляет код библиотеки в уже скомпилированную программу только при соединении всех скомпилированных частей. Он не влияет на компиляцию и, следовательно, не влияет на сообщение об ошибке, которое вы видите.
Компилятор должен видеть информацию о модулях библиотеки NAG. Это обычно хранится в файлах модуля с .mod
расширение. Компиляторы обычно ищут их только в текущем каталоге или в системных каталогах включения.
Вы можете указать компилятору выполнять поиск в другом каталоге, используя специальный флаг компилятора. Может отличаться в разных компиляторах, но обычно -I
затем каталог, в котором хранится библиотека .mod
файлы.
Имейте в виду, что .mod
файлы в библиотеке совместимы только с тем же компилятором, который использовался для их создания поставщиком библиотеки.