Ссылка на библиотеку 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 файлы в библиотеке совместимы только с тем же компилятором, который использовался для их создания поставщиком библиотеки.

Другие вопросы по тегам