1.1 О GNU Fortran
Компилятор GNU Fortran является преемником g77, переднего конца Fortran 77, включённого в GCC до версии 4 (выпущенной в 2005 году). Хотя он обратно совместим с большинством g77 расширений и командных параметров, gfortran представляет собой полностью новую реализацию, предназначенную для поддержки более современных диалектов Fortran. GNU Fortran полностью реализует стандарты Fortran 77, 90 и 95, большую часть стандартов Fortran 2003 и 2008, а также некоторые функции из стандарта 2018 года. Он также реализует несколько расширений, включая поддержку OpenMP и OpenACC для параллельного программирования.
Компилятор GNU Fortran проходит тестовый набор NIST Fortran 77 и даёт приемлемые результаты для тестового набора LAPACK. Он также демонстрирует достойную производительность в тестах производительности компилятора Fortran Polyhedron и тестах ядра Fortran Livermore. Он использовался для компиляции ряда крупных реальных программ, включая прогноз погоды HARMONIE и HIRLAM и пакет квантовой химии Tonto; см. https://gcc.gnu.org/wiki/GfortranApps для расширенного списка.
GNU Fortran предоставляет следующие функции:
- Чтение программы, хранящейся в файле и содержащей исходный код инструкции, написанные на Fortran 77.
- Перевод программы в инструкции, которые компьютер может выполнять быстрее, чем перевод исходных инструкций Fortran. Результатом компиляции программы является машинный код, который эффективно переводится и обрабатывается машиной, например, вашим компьютером. Люди обычно не так хороши в написании машинного кода, как в написании Fortran (или C++, Ada, или Java), потому что при написании машинного кода легко совершать мелкие ошибки.
- Предоставление информации о причинах, по которым компилятор не может создать двоичный файл из исходного кода, например, если исходный код содержит ошибки. Стандарты языка Fortran требуют, чтобы компилятор мог указывать ошибки в вашем коде. Неправильное использование языка приводит к сообщению об ошибке.
Компилятор также пытается диагностировать случаи, когда ваша программа содержит правильное использование языка, но даёт компьютеру сомнительные инструкции. Этот тип диагностического сообщения называется сообщением об ошибке.
- Предоставление необязательной информации о этапах перевода из исходного кода в машинный код. Это может помочь вам найти причину определённых ошибок, которые могут быть не очевидны в исходном коде, но могут быть легче найдены на более низком уровне выходных данных компилятора. Это также помогает разработчикам находить ошибки в самом компиляторе.
- Предоставление в сгенерированном машинном коде информации, которая может облегчить поиск ошибок в программе (используя инструмент отладки, называемый отладчиком, например, GNU Debugger
gdb). - Поиск и сборка уже сгенерированного машинного кода для выполнения действий, запрошенных операторами в программе. Этот машинный код организован в модули и находится и подключается к программе пользователя.
Компилятор GNU Fortran состоит из нескольких компонентов:
- Версия команды
gcc(которая также может быть установлена как системная командаcc), которая также понимает и принимает исходный код Fortran. Командаgccявляется программой-драйвером для всех языков в GNU Compiler Collection (GCC); с помощьюgcc, вы можете скомпилировать исходный код любого языка, для которого в GCC доступен передний конец. - Сама команда
gfortran(которая также может быть установлена как системная командаf95).gfortran— это просто другая программа-драйвер, но только для компилятора Fortran. Основное различие между командамиgccиgfortranзаключается в том, что последняя автоматически подключает правильные библиотеки к вашей программе. - Набор библиотек времени выполнения. Эти библиотеки содержат машинный код, необходимый для поддержки возможностей языка Fortran, которые не предоставляются напрямую машинным кодом, сгенерированным на этапе компиляции
gfortran, например, встроенные функции и подпрограммы, и процедуры для взаимодействия с файлами и операционной системой. - Сам компилятор Fortran (
f951). Это анализатор и генератор кода GNU Fortran, связанный с и взаимодействующий с библиотекой обратной стороны GCC.f951«переводит» исходный код в код ассемблера. Обычно вы не будете использовать эту программу напрямую; вместо этого программы-драйвераgccилиgfortranвызывают её за вас.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/About-GNU-Fortran.html