2016-06-21 3 views
0

В настоящее время я компилирую исходные коды fortran95 на mac с помощью gfortran 6.1. Мне было интересно, могу ли я использовать исходные коды FORTRAN 77, используя то же самое. Если нет, то какие-либо предложения?Может ли компилятор Fortran 95 скомпилировать код Fortran 77?

+0

С несколькими исключениями, действительная Fortran 77 программой являются действительной Fortran 95 программами. Просто очень плохо написаны программы Fortran 95. – francescalus

ответ

2

Вы не указали, какую ошибку вы столкнулись во время процесса компиляции. См. 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. Затем сделайте этот вывод и выполните

Можете ли вы опубликовать вывод обеих команд в качестве комментария?

+0

Спасибо. Я очень новичок в программировании fortran, поэтому не знаю много технических слов. Будем ждать подробностей. – Vineetha

+0

Я пробовал в обоих направлениях, получил такую ​​же ошибку. ld: warning: игнорирование файла epi.f77, файл был создан для неподдерживаемого формата файла, который не связан с архитектурой (x86_64): epi.f77 Неопределенные символы для архитектуры x86_64: «_main», ссылка от: неявная запись/start для основного исполнительного файла ld: символ (-ы) не найден для архитектуры x86_64 collect2: error: ld return 1 status status – Vineetha

+0

попробуйте создать небольшую программу Hello World и скомпилировать ее. Если это удастся, у вас возникнет проблема в другом месте. Можете ли вы рассказать нам, как вы компилируете epi.F77? что является результатом «файла epi.F77» – Jagte

0

Его работа, если я использую

gfortran old_fortran.f -o a.out

+0

Итак, что вы делали в первую очередь, что не работали? a.out по умолчанию, поэтому вам даже этого не нужно. – agentp

+0

@agentp Я использую old_fortran.f77, как это было предложено в предыдущем ответе. – Vineetha