![]() |
|
|
![]()
|
|
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: нет Всего: 39 |
Всем привет,
Fedora Core 9 (linux) gfortran, g++ Я тут повертел-повертел и пришёл к выводу, что совершенно не понимаю, что в процессе компиляции происходит с файлами модулей (.mod). Допустим, имеется многопакетный проект, в котором каждый пакет компилится в объекты и собирается в отдельную статическую библиотеку .a-архиватором. Стандартная схема. А дальше-то что? Если посмотреть на библиотеку утилитой nm, то она показывает, что все модульные символы undefined. Логично, что при попытке слинковать библиотеку с экзешником, радостно вывалится куча неразрешённых зависимостей. Видимо, компилятор поместил все символы модулей в mod-файлы. Как вот их оттуда задействовать теперь? Вопрос в отношении не чисто фортранного проекта, а многоязыкового, пусть, например, экзешник и некоторые пакеты написаны на C++. Можно где-нибудь увидеть пример скрипта или make-файла для такого случая? Спасибо. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| popovda |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 9.6.2006 Где: Москва Репутация: нет Всего: 6 |
Никогда не сталкивался с Вашей проблемой. Но gfortran настоятельно не рекомендую. Из свободных g95 стабильнее. BIND ( С ) не пробовали? Это стандартный модуль iso_c_binding. Я для связки с C/C++ им пользовался и весьма успешно.
Это сообщение отредактировал(а) popovda - 2.11.2008, 12:37 -------------------- С уважением, Попов Д.А. |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: нет Всего: 39 |
popovda, привествую, спасибо за ответ,
Проблема была решена давно, зря я не отписался. На самом деле, неразрешённость символов была спровоцирована другим - я забыл слинковать к плюсовому бинарнику библиотеку стандартных функций фортрана. На кластере выбор только между gfortran или ifort. В итоге сделал, что работает и с тем, и с другим. Байндинг на самом деле не нужен в большинстве случаев, всё неплохо работает напрямую. Про модули вот какой интересный факт: символы, определённые в модулях с точки зрения готового исполняемого образа - это глобальные переменные с именами вида <имя_модуля>_<имя_символа> -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |