Компилятор G77 (GNU Fortran )основан на стандарте ANSI Fortran 77, но он включает в себя многие особенности, определенные в стандартах Fotran 90 и Fortran 95.
Синтаксис команды:
g77 [-c?-S?-E]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-pedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] infile...
Все опции поддерживаемые gcc
поддерживаются и g77
. Компиляторы С и g77 интегрированы.
Обращение:
g77 [option | filename]...
Исходные файлы:
source.f, source.for, source.FOR
Значение некоторых опций:
-c | создать только объектный файл (source.o) из исходного ( source.f, .source.for, source.FOR ) |
-o file | создать загрузочный файл с именем file (по умолчанию создается файл с именем a.out) |
-llibrary | использовать библиотеку liblibrary.a при редактировании связей |
-Idir | добавить каталог dir в список поиска каталогов, содержащих include- файлы |
-Ldir | добавить директорию dir в список поиска библиотек |
-O | включить оптимизацию |
-g | создать отладочную информацию для работы с отладчиком |
Для получения полного описания g77 следует смотреть документацию по GNU Fortran. Об опциях g77 можно также получить информацию с помощью команд:
info g77
man g77
GСС - это свободно доступный оптимизирующий компилятор для языков C, C++.
Программа gcc, запускаемая из командной строки, представяляет собой надстройку над группой компиляторов. В зависимости от расширений имен файлов, передаваемых в качестве параметров, и дополнительных опций, gcc запускает необходимые препроцессоры, компиляторы, линкеры.
Файлы с расширением .cc или .C рассматриваются, как файлы на языке C++, файлы с расширением .c как программы на языке C, а файлы c расширением .o считаются объектными.
Чтобы откомпилировать исходный код C++, находящийся в файле F.cc, и создать объектный файл F.o, необходимо выполнить команду:
gcc -c F.cc
Опция –c
означает «только компиляция».
Чтобы скомпоновать один или несколько объектных файлов, полученных из исходного кода - F1.o, F2.o, ... - в единый исполняемый файл F, необходимо ввести команду:
gcc -o F F1.o F2.o
Опция -o
задает имя исполняемого файла.
Можно совместить два этапа обработки - компиляцию и компоновку - в один общий этап с помощью команды:
gcc -o F <compile-and-link-options> F1.cc ... -lg++ <other-libraries>
<compile-and-link –options>
- возможные дополнительные опции компиляции и компоновки. Опция –lg++
указывает на необходимость подключить стандартную библиотеку языка С++, <other-libraries>
- возможные дополнительные библиотеки.
После компоновки будет создан исполняемый файл F, который можно запустить с помощью команды
./F <arguments>
<arguments>
- список аргументов командной строки Вашей программы.
В процессе компоновки очень часто приходится использовать библиотеки. Библиотекой называют набор объектных файлов, сгруппированных в единый файл и проиндексированных. Когда команда компоновки обнаруживает некоторую библиотеку в списке объектных файлов для компоновки, она проверяет, содержат ли уже скомпонованные объектные файлы вызовы для функций, определенных в одном из файлов библиотек. Если такие функции найдены, соответствующие вызовы связываются с кодом объектного файла из библиотеки. Библиотеки могут быть подключены с помощью опции вида -lname
. В этом случае в стандартных каталогах, таких как /lib , /usr/lib, /usr/local/lib будет проведен поиск библиотеки в файле с именем libname.a. Библиотеки должны быть перечислены после исходных или объектных файлов, содержащих вызовы к соответствующим функциям.
Опции компиляции
Среди множества опций компиляции и компоновки наиболее часто употребляются следующие:
Опция | Назначение |
-c | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы в виде name.o. Компоновка не производится. |
-Dname=value | Определить имя name в компилируемой программе, как значение value. Эффект такой же, как наличие строки #define name value в начале программы. Часть =value может быть опущена, в этом случае значение по умолчанию равно 1. |
-o file-name | Использовать file-name в качестве имени для создаваемого файла. |
-lname | Использовать при компоновке библиотеку libname.so |
-Llib-path -Iinclude-path |
Добавить к стандартным каталогам поиска библиотек и заголовочных файлов пути lib-path и include-path соответственно. |
-g | Поместить в объектный или исполняемый файл отладочную информацию для отладчика gdb. Опция должна быть указана и для компиляции, и для компоновки. В сочетании –g рекомендуется использовать опцию отключения оптимизации –O0 (см.ниже) |
-MM | Вывести зависимости от заголовочных файлов , используемых в Си или С++ программе, в формате, подходящем для утилиты make. Объектные или исполняемые файлы не создаются. |
-pg | Поместить в объектный или исполняемый файл инструкции профилирования для генерации информации, используемой утилитой gprof. Опция должна быть указана и для компиляции, и для компоновки. Собранная с опцией -pg программа при запуске генерирует файл статистики. Программа gprof на основе этого файла создает расшифровку, указывающую время, потраченное на выполнение каждой функции. |
-Wall | Вывод сообщений о всех предупреждениях или ошибках, возникающих во время компиляции программы. |
-O1 -O2 -O3 |
Различные уровни оптимизации. |
-O0 | Не оптимизировать. Если вы используете многочисленные -O опции с номерами или без номеров уровня, действительной является последняя такая опция. |
-I | Используется для добавления ваших собственных каталогов для поиска заголовочных файлов в процессе сборки |
-L | Передается компоновщику. Используется для добавления ваших собственных каталогов для поиска библиотек в процессе сборки. |
-l | Передается компоновщику. Используется для добавления ваших собственных библиотек для поиска в процессе сборки. |
GFortran - это название компилятора языка программирования Фортран, входящего в коллекцию компиляторов GNU.
Сборка FORTRAN-программы:
Синтаксис
gfortran [-c?-S?-E]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-pedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...]
[-mmachine-option...]
[-o outfile] infile...
GFortran опирается на GCC, и, следовательно, разделяет большинство его характеристик. В частности, параметры для оптимизации и генерации отладочной информации у них совпадают.
GFortran используется для компиляции исходного файла, source.f90, в объектный файл, object.o или исполняемый файл, executable. Одновременно он генерирует модуль файлов описания встречающихся модулей, так называемый nameofmodule.mod.
Для компиляции исходного файла source.f90, можно запустить: gfortran source.f90
Выходной файл будет автоматически имени source.o. Это объектный файл, который не может быть исполнен. После того как вы собрали некоторые исходные файлы, вы можете соединить их вместе с необходимыми библиотеками для создания исполняемого файла. Это делается следующим образом: gfortran -o executable object1.o object2.o...
, где исполняемым будет executable, objectX.o - объектные файлы, которые могут быть созданы, как указано выше, или в равной степени другими компиляторами из источников в другом языке. Если опущено имя исполняемого файла, то исполняемый файл будет с названием a.out. Исполняемый файл может быть выполнен, как и в любой другой программе. Можно также пропустить отдельный этап компиляции и ввести такую команду: gfortran o executable source1.f90 source2.f90,
которая будет осуществлять сбор исходных файлов source1.f90 и source2.f90, связь и создаст исполняемый файл. Вы также можете поместить объектные файлы в этой командной строке, они будут автоматически присоединены.
Опция | Назначение |
-c | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы в виде name.o. Компоновка не производится. |
-Dname=value | Определить имя name в компилируемой программе, как значение value. Эффект такой же, как наличие строки #define name value в начале программы. Часть =value может быть опущена, в этом случае значение по умолчанию равно 1. |
-o file-name | Использовать file-name в качестве имени для создаваемого файла. |
-lname | Использовать при компоновке библиотеку libname.so |
-Llib-path -Iinclude-path |
Добавить к стандартным каталогам поиска библиотек и заголовочных файлов пути lib-path и include-path соответственно. |
-g | Поместить в объектный или исполняемый файл отладочную информацию для отладчика gdb. Опция должна быть указана и для компиляции, и для компоновки. В сочетании –g рекомендуется использовать опцию отключения оптимизации –O0 (см.ниже) |
-MM | Вывести зависимости от заголовочных файлов , используемых в Си или С++ программе, в формате, подходящем для утилиты make. Объектные или исполняемые файлы не создаются. |
-pg | Поместить в объектный или исполняемый файл инструкции профилирования для генерации информации, используемой утилитой gprof. Опция должна быть указана и для компиляции, и для компоновки. Собранная с опцией -pg программа при запуске генерирует файл статистики. Программа gprof на основе этого файла создает расшифровку, указывающую время, потраченное на выполнение каждой функции. |
-Wall | Вывод сообщений о всех предупреждениях или ошибках, возникающих во время компиляции программы. |
-O1 -O2 -O3 |
Различные уровни оптимизации. |
-O0 | Не оптимизировать. Если вы используете многочисленные -O опции с номерами или без номеров уровня, действительной является последняя такая опция. |
-I | Использует для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки |
-L | Передает компоновщику. Использует для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
-l | Передает компоновщику. Использует для добавления ваших собственных библиотек поиска в процессе сборки. |
Компилятор Portland Group C (PGCC).
Компилятор PGCC для процессоров AMD64 и IA32/EM64T производит компиляцию программ C и линкует согласно опциям в командной строке.
Синтаксис команды:
pgcc [ -параметры ]... sourcefile...
sourcefile
указывают на вид файла:Полный список опций компилятора можно посмотреть по команде man pgcc
.
Некоторые важные опции компиляции для PGCC приведены ниже:
Опция | Назначение |
-с | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы. |
-C | Включает проверки выхода индекса за границы массива |
-O0 | Отключает оптимизацию. |
-О1 | Оптимизация по размеру. Не использует методов оптимизации, которые могут увеличить размер кода. Создает в большинстве случаев самый маленький размер кода. |
-O2 или -O | Оптимизация устанавливаемая по умолчанию. |
-O3 | Задействует методы оптимизации из -O2 и, дополнительно, более агрессивные методы оптимизации, которые подходят не для всех программ. |
-Os | Включает оптимизацию по скорости, но при этом отключает некоторые оптимизации, которые могут привести к увеличению размеров кода при незначительном выигрыше в скорости. |
-fast | Включает в себя -O2 и ряд других опций, таких как использование векторизации с поддержкой SSE инструкций. Использование -fast понижает точность вычислений. |
-g | Включает информацию об отладке. |
-fastsse | То же самое что и -fast -Mipa=fast - включает межпроцедурный анализ. |
-I | Использует для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки. |
-L | Передает компоновщику. Использует для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
-l | Передает компоновщику. Использует для добавления ваших собственных библиотек поиска в процессе сборки. |
Компилятор The Portland Group Inc. Fortran (PGFortran).
Компилятор PGFortran для процессоров AMD64 и IA32/EM64T производит компиляцию программ на Фортране и линкует согласно опциям в командной строке. PGFortran является интерфейсом для компиляторов pgf90 и pgf95.
Синтаксис команды:
pgfortran [ -параметры ]... sourcefile...
sourcefile
указывают на вид файла:Полный список опций компилятора можно посмотреть по команде man pgfortran
.
Некоторые важные опции компиляции для PGFortran приведены здесь.
Опция | Назначение |
-o file |
Использует file как имя выходного исполняемого файла программы, вместо имени по умолчанию - a.out. Если используется совместно с опцией -с или -S и с одним входным файлом, то file используется в качестве имени объектного или ассемблерного выходного файла. |
-S |
Пропускает этапы ассемблирования и линкования. Для каждого файла с именем, например, file.f создает при выходе из компиляции файл с именем file.s . См. также -о. |
-fastsse |
Выбирает основные оптимальные установки для процессора, который поддерживает SSE инструкции (Pentium 3 / 4, AthlonXP / MP, Opteron) и SSE2 (Pentium 4, Opteron). Используйте в pgf90 -fastsse -help чтобы просмотреть установки. |
-C | Включает проверки выхода индекса за границы массива также как и -Mbounds |
-i2 | Целые и логические переменные длиной 2 байта . |
-i4 | Целые и логические переменные длиной 4 байта . |
-i8 | Целые и логические переменные длиной 8 байт . Устанавливается по умолчанию. Для операций над целыми числами отводится 64 бита. |
-O[N] | Устанавливает уровень оптимизации равным N. -O0 до -O4, по умолчанию устанавливается -O2. Если не указана опция -O и если не заказана -g, то устанавливается -O1 , но если заказана -g, то устанавливается -O0. Когда номер у -O не указан, то устанавливается -O2. |
-O0 | Без оптимизации. |
-О1 |
Оптимизация в рамках основных блоков. Выполняется некоторое распределение регистров. Глобальная оптимизация не выполняется. |
-O2 | Выполняется оптимизация -O1. Кроме того, выполняются традиционные скалярные оптимизации, такие как признание индукции и инвариант цикла движения глобального оптимизатора. |
-O3 |
Задействует методы оптимизации из -O1 и -O2 и, дополнительно, более агрессивные методы оптимизации циклов и доступа к памяти, такие как подстановка скаляров, раскрутка циклов. Эти агрессивные методы оптимизации могут, в ряде случаев, и замедлить работу приложений . |
-O4 | Выполняет все уровни оптимизации -O1,-O2, -O3, кроме того, выполняет оптимизацию выражений с плавающей точкой. |
-fpic |
Передаёт компилятору для генерации позиционно-независимого кода, который может быть использован при создании общих объектных файлов (динамически связываемых библиотек). |
-gopt |
Сообщает компоновщику включение отладочной информации без отключения оптимизации |
-s |
Использует линковщик; таблицы символьной информации, оптимизации. Использование может привести к неожиданным результатам при отладке с оптимизацией, она предназначена для использования с другими опциями , которые используют отладочную информацию. |
-pg | Устанавливает профилирование; влечёт установку -Mframe |
-r4 | Переменные DOUBLE PRECISION рассматриваются как REAL. |
-r8 | Переменные REAL рассматриваются как DOUBLE PRECISION . Это тоже самое, что и указать -Mr8 и -Mr8intrinsics. |
-fast | Обеспечивает ускоренный метод нескольких оптимизаций на время выполнения программы. Устанавливает параметры для повышения производительности в размере не менее 2, см.-O. Используйте pgf90 -fast -help для просмотра эквивалентных переключателей. |
-g | Создаёт отладочную информацию. Опция устанавливает уровень оптимизации до нуля, если только заказана опция -O . Процесс может привести к неожиданным результатам, если заказан уровень оптимизации отличный от нуля. Сгенерированный код будет работать медленнее при -O0, чем при других уровнях оптимизации. |
-I | Добавляет ваши собственные каталоги поиска заголовочных файлов в процессе сборки |
-L | Передает компоновщику. Добавляет ваши собственные каталоги поиска библиотек в процессе сборки. |
-l | Передает компоновщику. Добавляет ваши собственные библиотеки поиска в процессе сборки. |
icc -команда для вызова компилятора Intel(R) (C или C++).
Синтаксис команды:
icc [параметры] file1 [file2] ...
fileN
– это файлы на языке C или C++, сборочные файлы, объектные файлы, библиотеки объектов или другие линкуемые файлы
Полный список опций можно посмотреть по команде man icc
.
Некоторые важные опции компиляции для ICC приведены ниже:
Опция | Назначение |
-с | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы. |
-C | Включает проверки выхода индекса за границы массива. |
-O0 | Отключает оптимизацию. |
-О1 | Оптимизация по размеру. Не использует методов оптимизации, которые могут увеличить размер кода. Создает в большинстве случаев самый маленький размер кода. |
-O2 или -O | Оптимизация устанавливаемая по умолчанию. |
-O3 | Задействует методы оптимизации из -O2 и, дополнительно, более агрессивные методы оптимизации, которые подходят не для всех программ. |
-Os | Включает оптимизацию по скорости, но при этом отключает некоторые оптимизации, которые могут привести к увеличению размеров кода при незначительном выигрыше в скорости. |
-fast | Обеспечивает ускоренный метод для нескольких оптимизаций на время выполнения программы. Устанавливает -xT -O3 -ipo -no-prec-div -static параметры для повышения производительности: • -O3 (см. выше) • -ipo (включает межпроцедурную оптимизацию между файлами) • -static (предотвращает линкование с общими библиотеками). Параметры задаются списком и не могут быть заданы по отдельности. |
-g | Включает информацию об отладке. |
-I | Используется для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки. |
-L | Передается компоновщику. Используется для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
-l | Передается компоновщику. Используется для добавления ваших собственных библиотек в процессе сборки. |
ifort -команда для вызова компилятора Intel(R) Fortran.
Синтаксис команды:
ifort [параметры] file1 [file2] ...
fileN
– это файлы на языке Fortran, сборочные файлы, объектные файлы, библиотеки объектов или другие линкуемые файлыПолный список опций можно посмотреть по команде man ifort
.
Команда ifort
интерпретирует входные файлы по суффиксу имени файла следующим образом:
Имена файлов с суффиксом .f90 интерпретируются как файлы в свободной форме записи на Fortran 95/90.
Имена файлов с суффиксом .f, .for или .ftn интерпретируются как фиксированная форма записи для Fortran 66/77 файлов.
В Fortran 90/95, наряду с фиксированным форматом исходного текста программы, разрешен свободный формат. Свободный формат допускает помещение более одного оператора в строке, при этом в качестве разделителя используется точка с запятой. Признак продолжения оператора на строку продолжения - символ & - указывается в конце той строки, которую надо продолжить. Комментарии записываются после символа восклицательный знак в начале строки или в любой позиции строки после оператора. В свободном формате пробелы являются значащими.
Некоторые важные опции компиляции для Intel Fortran приведены ниже:
Опция | Назначение |
-free | Указывает, что исходные файлы находятся в свободном формате. По умолчанию, формат исходного файла определяется суффиксом файла |
-fixed | Указывает, что исходные файлы находятся в фиксированном формате. По умолчанию, формат исходного файла определяется суффиксом файла |
-с | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы |
-C | Включает проверки выхода индекса за границы массива |
-i2 | Целые и логические переменные длиной 2 байта (тоже, что и опция -integer-size 16). По умолчанию целочисленный размер равен 32 разряда. |
-i4 | Целые и логические переменные длиной 4 байта (тоже, что и опция -integer-size 32 ). Это значение устанавливается по умолчанию. |
-i8 | Целые и логические переменные 8 байт (тоже , что и опция -integer-size 64). По умолчанию целочисленный размер равен 32 разряда. |
-O0 | Отключает оптимизацию |
-О1 | Оптимизация по размеру. Не использует методов оптимизации, которые могут увеличить размер кода. Создает в большинстве случаев самый маленький размер кода. |
-O2 или -O | Максимизация скорости. Как правило, создает более быстрый код, чем -O1. Эта опция устанавливается по умолчанию для оптимизации, если не указана -g |
-O3 | Задействует методы оптимизации из -O2 и, дополнительно, более агрессивные методы оптимизации циклов и доступа к памяти, такие как подстановка скаляров, раскрутка циклов, подстановка кода для избегания ветвлений, блокирование циклов для обеспечения более эффективного использования кэш-памяти и, только на системах архитектуры IA-64, дополнительная подготовка данных. Данная опция особенно рекомендуется для приложений, где есть циклы, которые активно используют вычисления с плавающей точкой или обрабатывают большие порции данных. Эти агрессивные методы оптимизации могут в ряде случаев, и замедлить работу приложений других типов по сравнению с использованием -O2. |
-OpenMP | Включает поддержку стандарта OpenMP 2.0 Распараллеливает программу. Позволяет параллелизацию для создания многопоточного кода на основе команд OpenMP. Этот опция может быть выполнена в параллельном режиме на однопроцессорных и многопроцессорных системах. OpenMP-опция работает как с-O0 (без оптимизации) и c любым уровнем оптимизации -O. Указание с-O0 помогает для отладки OpenMP приложений. |
-OpenMP-stubs | Включает выполнение программ OpenMP в последовательном режиме. Директивы OpenMP игнорируются, если стоят заглушки (stubs) для OpenMP |
-p | Порождает дополнительный код для записи профилирующей информации, подходящей для анализирующей программы PROF. Вы должны использовать эту опцию при компиляции исходного файла, о котором вы хотите получить информацию, и вы также должны использовать ее при линковке. |
-parallel | Включает автоматическое распараллеливание циклов, для которых это безопасно. Чтобы использовать эту опцию, вы также должны указать-O2 и-O3. |
-r8 | Вещественные и комплексные переменные длиной 8 байт. Переменные REAL рассматриваются как DOUBLE PRECISION (REAL(KIND=8)) и комплексные рассматриваются в качестве DOUBLE COMPLEX (COMPLEX(KIND=8)). Это тоже самое, что и указать -real-size 64 или -autodouble. |
-r16 | Вещественные и комплексные переменные длиной 16 байт. Переменные REAL рассматриваются как REAL (REAL(KIND=16), COMPLEX и DOUBLE COMPLEX рассматривается как COMPLEX (COMPLEX(KIND=16)). Это тоже самое, что и указать -real-size 128. |
-save | Сохраняет переменные, за исключением тех, которые объявлены, как AUTOMATIC, в статической памяти (тоже, что и noauto-noautomatic). По умолчанию используется –autoscalar, однако, если Вы укажите -recursive или -OpenMP, то по умолчанию используется AUTOMATIC |
-stand | Заставляет компилятор выдавать сообщения компиляции для нестандартных элементов языка. |
-fast | Обеспечивает ускоренный метод для нескольких оптимизаций на время выполнения программы. Устанавливает следующие параметры для повышения производительности: • -O3 • -ipo (включает межпроцедурную оптимизацию между файлами) • -static (предотвращает линкование с общими библиотеками). |
-g | Помещает в объектный или исполняемый файл отладочную информацию для отладчика gdb. Опция должна быть указана и для компиляции, и для компоновки. В сочетании –g рекомендуется использовать опцию отключения оптимизации –O0 |
-check bounds | Выполняет динамическую проверку выхода индекса за границы массива. Проверка может увеличить время выполнения программы. |
-I | Использует для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки |
-L | Передает компоновщику. Использует для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
-l | Передает компоновщику. Использует для добавления ваших собственных библиотек поиска в процессе сборки. |