F77(1)
НАЗВАНИЕ
f77 - компилятор языка Фортран 77
СИНТАКСИС
f77 [-c] [-p] [-O[число]] [-S] [-o вых_файл] [-g] [-onetrip] [-1]
[-66] [-C] [-I[24s]] [-U] [-u] [-w] [-F] [-m] [-E] [-R] [-v]
[-Ncглубина] [-Nlстепень_разветвления]
[-Nqчисло_эквивалентностей] [-Nnразмер] [-Nsчисло_меток]
[-Nxчисло_внешних_имен] файл ...
ОПИСАНИЕ
Команда f77 служит для вызова компилятора языка Фортран
77. Компилятор обрабатывает несколько типов файловых
аргументов.
- Аргументы, оканчивающиеся на .f, интерпретируются
как имена файлов, содержащих исходные тексты на
языке f77; они компилируются, и каждый об ектный
модуль помещается в текущем каталоге в файл с именем, которое образуется из имени исходного файла
замещением расширения .f на .o.
- Аргументы, оканчивающиеся на .r или .e, интерпретируются как имена файлов, содержащих исходные
тексты на языках RATFOR и EFL соответственно; сначала эти файлы обрабатываются подходящим препроцессором, а уже затем - компилятором f77 с образованием .o-файлов.
- Аналогично, аргументы, оканчивающиеся на .c или
.s, интерпретируются как имена файлов, содержащих
исходные тексты на языке C или языке ассемблера
соответственно; эти файлы обрабатываются C-компилятором или ассемблером с образованием .o-файлов.
Следующие опции имеют тот же смысл, что и для команды
cc(1) [см. опции редактора связей ld(1)]:
- -c
- Отменить редактирование связей и сгенерировать
об ектный модуль для каждого исходного файла.
- -p
- Подготовить об ектные файлы для профилирования
[см. prof(1)].
- -O[число]
- Вызвать оптимизатор об ектного кода. Число - это
максимальное количество регистровых переменных (от
1 до 4).
- -S
- Скомпилировать указанные программы и результат на
языке ассемблера поместить в соответствующие файлы
с расширением .s (в этом случае об ектные модули
не создаются).
- -o вых_файл
- Окончательный результат поместить в файл с именем
вых_файл, а не в a.out.
- -g
- Сгенерировать дополнительную информацию для отладчика sdb(1).
Следующие опции специфичны для команды f77:
- -onetrip
- Компилировать DO-циклы так, чтобы они выполнялись
по крайней мере один раз. (DO-цикл в языке Фортран
77 не выполняется ни разу, если верхняя граница
значений управляющей переменной цикла меньше нижней).
- -1
- То же, что и -onetrip.
- -66
- Отменить расширения, нарушающие совместимость с
языком Фортран 66.
- -C
- Сгенерировать команды для проверок во время выполнения, не выходят ли индексы за допустимые пределы.
- -I[24s]
- Изменить стандартный размер целых переменных (действует только на машинах, где "нормальный" размер
целых не равен размеру действительных значений
одинарной точности). Задание -I2 или -I4 (значение
по умолчанию) приведет к тому, что все целые будут, соответственно, двух- или четырехбайтными.
Задание -Is изменит подразумеваемый размер индексных выражений (и только их) на двухбайтный.
- -U
- Различать большие и малые буквы. Обычно компилятор
f77 их не различает, то есть a не отличается от A.
- -u
- Установить тип переменной по умолчанию как неопределенный, а не использовать стандартные правила
языка Фортран 77.
- -w
- Подавить все предупреждающие сообщения. Если опция
имеет вид -w66, то подавляются только предупреждающие сообщения о нарушении совместимости с языком Фортран 66.
- -F
- Обработать препроцессорами efl и ratfor соответствующие файлы и результаты поместить в файлы с расширениями .f. Об ектные .o-файлы не создаются.
- -m
- Перед препроцессированием EFL- и RATFOR-файлов обработать их макропроцессором m4.
- -E
- Стоящие после этого флага символы используются как
аргументы команды efl каждый раз, когда обрабатывается .e-файл.
- -R
- Стоящие после этого флага символы используются как
аргументы команды ratfor каждый раз, когда обрабатывается .r-файл.
- -v
- Информационный режим. Выдавать полную диагностику
во время компиляции.
- -Ncглубина
- Изменить максимально допустимую глубину вложенности условных операторов и DO-циклов. Подразумевается 20.
- -Nlстепень_разветвления
- Изменить максимально допустимое число меток в вычисляемом goto и допустимое число альтернативных точек возврата. Подразумевается 125.
- -Nqчисло_эквивалентностей
- Изменить максимально допустимое число связей, устанавливаемых операторами EQUIVALENCE в одной
программной единице. Подразумевается 150.
- -Nnразмер
- Изменить размер таблицы имен. Подразумевается 401.
- -Nsчисло_меток
- Изменить максимально допустимое число меток у операторов одной программной единицы. Подразумевается 201.
- -Nxчисло_внешних_имен
- Изменить максимально допустимое число внешних имен. Подразумевается 200.
Остальные аргументы рассматриваются как опции редактора
связей, имена об ектных модулей, совместимых с
f77-программами (обычно эти модули получены в результате предшествующих запусков компилятора), или, возможно,
библиотек f77-совместимых программ. Эти программы,
вместе с результатами текущей компиляции, обрабатываются редактором связей, и созданная выполняемая программа, если не указана опция редактора связей -o, помещается в файл a.out.
ОКРУЖЕНИЕ
- SHLIB
- Если переменная SHLIB имеет значение YES, будут
использоваться разделяемые версии библиотек libc*.
- STACKCHECK
- Если переменная STACKCHECK имеет значение ON, порождаются команды для контроля стека.
- FP
- Если переменная FP имеет значение M68881, компилятор генерирует инструкции для сопроцессора
MC68881, поддерживающего арифметику вещественных
чисел. Если результат какой-либо функции является
вещественным, он возвращается только в регистре
%fp0. Если переменная FP равна M68881u, вещественные значения возвращаются еще и в регистрах %d0/
%d1 для совместимости со старыми библиотеками.
Компилятор выбирает соответствующие версии библиотек
libc и libm согласно значениям переменных окружения FP
и SHLIB.
ФАЙЛЫ
файл.[fresc] Исходный файл.
файл.o Об ектный файл.
файл.s Ассемблерный файл.
a.out Результат работы редактора свя-
зей.
/usr/tmp/F77* Временные файлы.
/lib/cpp Препроцессор.
/usr/bin/ratfor Препроцессор ratfor(1).
/usr/bin/efl Препроцессор efl(1).
/usr/bin/f77pass1 Компилятор, проход 1.
/usr/bin/f77pass2 Компилятор, проход 2.
/lib/optim Необязательный оптимизатор об -
ектного кода.
/bin/as Ассемблер as(1).
/bin/ld Редактор связей ld(1).
/lib/crt1.o
/lib/crtn.o Стандартная программа инициализа-
ции.
/lib/mcrt0.o Программа инициализации профили-
рования.
/lib/libc.a Стандартная библиотека, см. раз-
дел 3C.
/lib/libm.a Математическая библиотека, см.
раздел 3M.
/lib/lib*_s.a Разделяемые версии библиотек.
/lib/lib*881.a Версии библиотек для сопроцессора
арифметики вещественных чисел.
/lib/lib*881u.a Универсальные версии библиотек.
/usr/lib/libp/*.a Версии библиотек для профилирова-
ния.
/usr/lib/libF77.a Библиотека встроенных функций.
/usr/lib/libF77_881.a Версия библиотеки встроенных
функций для сопроцессора арифме-
тики вещественных чисел.
/usr/lib/libI77.a Библиотека ввода/вывода Фортрана.
/usr/lib/libI77_881.a Версия библиотеки ввода/вывода
для сопроцессора арифметики ве-
щественных чисел.
СМ. ТАКЖЕ
as(1), cc(1), efl(1), fsplit(1), ld(1), m4(1),
prof(1), ratfor(1), sdb(1).
ДИАГНОСТИКА
Диагностика, выдаваемая собственно компилятором f77, не
нуждается в раз яснениях. Замысловатые сообщения могут
вырабатываться редактором связей ld(1).
СЮРПРИЗЫ
Компилятор f77 генерирует неправильные команды при вызове функций с результатом типа CHARACTER - неверно корректируется указатель стека. По этой же причине не работают операторы ENTRY.
При компиляции оператора INQUIRE генерируется имя L%0,
которое нигде не определяется. В результате редактор
связей ld(1) фиксирует фатальную ошибку.