| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Fortran > [Tools] Модули как линкуются и др вопросы |
| Автор: marcusmae 10.10.2008, 00:56 |
| Всем привет, Fedora Core 9 (linux) gfortran, g++ Я тут повертел-повертел и пришёл к выводу, что совершенно не понимаю, что в процессе компиляции происходит с файлами модулей (.mod). Допустим, имеется многопакетный проект, в котором каждый пакет компилится в объекты и собирается в отдельную статическую библиотеку .a-архиватором. Стандартная схема. А дальше-то что? Если посмотреть на библиотеку утилитой nm, то она показывает, что все модульные символы undefined. Логично, что при попытке слинковать библиотеку с экзешником, радостно вывалится куча неразрешённых зависимостей. Видимо, компилятор поместил все символы модулей в mod-файлы. Как вот их оттуда задействовать теперь? Вопрос в отношении не чисто фортранного проекта, а многоязыкового, пусть, например, экзешник и некоторые пакеты написаны на C++. Можно где-нибудь увидеть пример скрипта или make-файла для такого случая? Спасибо. |
| Автор: popovda 2.11.2008, 11:36 |
| Никогда не сталкивался с Вашей проблемой. Но gfortran настоятельно не рекомендую. Из свободных g95 стабильнее. BIND ( С ) не пробовали? Это стандартный модуль iso_c_binding. Я для связки с C/C++ им пользовался и весьма успешно. |
| Автор: marcusmae 2.11.2008, 15:52 |
| popovda, привествую, спасибо за ответ, Проблема была решена давно, зря я не отписался. На самом деле, неразрешённость символов была спровоцирована другим - я забыл слинковать к плюсовому бинарнику библиотеку стандартных функций фортрана. На кластере выбор только между gfortran или ifort. В итоге сделал, что работает и с тем, и с другим. Байндинг на самом деле не нужен в большинстве случаев, всё неплохо работает напрямую. Про модули вот какой интересный факт: символы, определённые в модулях с точки зрения готового исполняемого образа - это глобальные переменные с именами вида <имя_модуля>_<имя_символа> |