В настоящее время я компилирую исходные коды fortran95 на mac с помощью gfortran 6.1. Мне было интересно, могу ли я использовать исходные коды FORTRAN 77, используя то же самое. Если нет, то какие-либо предложения?Может ли компилятор Fortran 95 скомпилировать код Fortran 77?
ответ
Вы не указали, какую ошибку вы столкнулись во время процесса компиляции. См. this link. В частности:
-std=*std*
где станд может быть один из «F95», «F2003», «F2008», «Гну», или «наследство».
Default value for std is ‘gnu’. From the same page: The ‘legacy’ value is equivalent but without the warnings for obsolete extensions, and may be useful for old non-standard programs. The ‘f95’, ‘f2003’ and ‘f2008’ values specify strict conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards, respectively; errors are given for all extensions beyond the relevant language standard, and warnings are given for the Fortran 77 features that are permitted but obsolescent in later standards.
Например, если у вас есть файл old_fortran.f77
для компиляции, вы можете сделать:
gfortran -std=legacy old_fortran.f77 -o a.out
где -o a.out
дает исполняемый a.out
. Я использовал более старую версию этого компилятора, не используя эту опцию. Однако вы можете получить некоторые предупреждения. Первая попытка:
gfortran old_fortran.f77 -o a.out
EDIT: После глядя на комментарии ниже, OP, похоже, другой вопрос может быть вовлечен. Возможно, что ваша установка неисправна (что возможно), или ваш LD_LIBRARY_PATH
испорчен. Я думаю, что ваш компоновщик (ld) на вашем пути 32 бит, а объектный файл, созданный вашим компилятором, может быть 64 бит. Просто догадка. Можете ли вы опубликовать вывод
which ld
Предположим, что возвращается:/путь/в/ld. Затем сделайте этот вывод и выполните
Можете ли вы опубликовать вывод обеих команд в качестве комментария?
Спасибо. Я очень новичок в программировании fortran, поэтому не знаю много технических слов. Будем ждать подробностей. – Vineetha
Я пробовал в обоих направлениях, получил такую же ошибку. ld: warning: игнорирование файла epi.f77, файл был создан для неподдерживаемого формата файла, который не связан с архитектурой (x86_64): epi.f77 Неопределенные символы для архитектуры x86_64: «_main», ссылка от: неявная запись/start для основного исполнительного файла ld: символ (-ы) не найден для архитектуры x86_64 collect2: error: ld return 1 status status – Vineetha
попробуйте создать небольшую программу Hello World и скомпилировать ее. Если это удастся, у вас возникнет проблема в другом месте. Можете ли вы рассказать нам, как вы компилируете epi.F77? что является результатом «файла epi.F77» – Jagte
С несколькими исключениями, действительная Fortran 77 программой являются действительной Fortran 95 программами. Просто очень плохо написаны программы Fortran 95. – francescalus