ссылка на модули во внешнем каталоге

Я хотел положить несколько модулей в одну папку, а программы хранить в другой. Когда я пытаюсь сгенерировать файл a.out, я пишу в консоли

    ifort  test.f90  -I~/Fortran/modulos/

test.f90 использует модуль grn, который ранее был скомпилирован в папке modulos. Это не работает, я получил следующее

test.f90 (5): error # 7002: Ошибка при открытии скомпилированного файла модуля. Отметьте INCLUDE пути. [GRN]

Что я делаю неправильно?. Я использую Intel fortran в Ubuntu :(

Хорошо, я добавлю некоторые подробности. Мой модуль выглядит примерно так:

    module grn
    contains
    !gaussian random number generator
    subroutine gaussian_rng ( rannumb )
    implicit none
    double precision , intent ( out ) ::rannumb
    blah blah....
    end subroutine gaussian_rng
    end module grn

это скомпилировано в моей папке 'modulos' командой ifort -c gaussgen.f90, после этого создаются соответствующие файлы .mod и .o, а затем в моей папке 'программы' у меня есть один под названием test.f90

    Program testOrdeningAndStatistics
    use grn
    Implicit None
    Real (Kind(0.d0)):: x
    blah blah ...
    call gaussian_rng(x)
    blah blah ...
    end Program testOrdeningAndStatistics

И я хочу сгенерировать исполняемый файл с ними. Идея простая, я хочу хранить программы и модули в отдельных папках.


person JoeCoolman    schedule 08.06.2013    source источник
comment
Всегда используйте тег fortran и добавляйте версию только тогда, когда это необходимо, чтобы отличить конкретный вопрос. Например, вы не можете использовать Fortran 2008, а только Fortran 90.   -  person Vladimir F    schedule 17.12.2015


Ответы (2)


Проблема в том, что символ ~ не разрешается в вашей домашней папке, поскольку оболочка заменяет его только в том случае, если он остается в начале слова. Итак, либо вставьте пробел между опцией и путем:

ifort  test.f90  -I ~/Fortran/modulos/

или напишите полный путь:

ifort  test.f90  -I/home/yourusername/Fortran/modulos/

У меня оба работают с ifort 12.1.0.

person Bálint Aradi    schedule 08.06.2013

Возможно, вам потребуется связать объектный файл .o, связанный с модулем. Если бы вы могли опубликовать простой пример исходного кода плюс программу компиляции, было бы легче понять, что вы делаете неправильно.

person spsgtn    schedule 08.06.2013