CC(1)
НАЗВАНИЕ
cc - компилятор языка C
СИНТАКСИС
cc [-c] [-p] [-g] [-O] [-L каталог] [-l библиотека]
[-W фаза,арг1[,арг2 ...] [-S] [-E] [-P] [-H] [-D имя] [-U имя]
[-I каталог] [-B цепочка_символов] [-t [p012al]] [-w] [-#]
файл ...
ОПИСАНИЕ
Команда cc является командой вызова компилятора языка
C, который генерирует ассемблерные инструкции. Команда
cc принимает аргументы следующих типов:
Аргументы, оканчивающиеся на .c, интерпретируются как
имена файлов, содержащих исходные тексты на языке C;
они компилируются, и каждый об ектный модуль помещается
в файл с именем, которое образуется из имени исходного
файла замещением расширения .c на .o. Однако об ектный
.o-файл обычно удаляется, если компилируется и одновременно загружается программа, состоящая из одного модуля. Аналогично, аргументы, оканчивающиеся на .s, интерпретируются как имена файлов, содержащих исходные
тексты на языке ассемблера, и ассемблируются с образованием об ектных .o-файлов.
Командой cc интерпретируются следующие опции [см. также
опции редактора связей ld(1) и ассемблера as(1)]:
-c | Отменить фазу редактирования связей и создавать
об'ектный файл даже в случае программы, состоящей
только из одного модуля. |
-p | Сгенерировать дополнительные команды для подсчета
числа обращений к каждой функции. Кроме того, если
имеет место фаза редактирования связей, стандартная подпрограмма инициализации заменяется на такую, которая автоматически вызывает функцию
monitor(3C) и обеспечивает запись файла mount.out
при нормальном завершении об'ектной программы.
Профиль выполнения программы может быть затем получен при помощи команды prof(1). |
-g | Сгенерировать дополнительную информацию для отладчика sdb(1). |
-О | Включить оптимизацию об ектного кода. |
-L каталог |
Дополнить каталогом список каталогов, которые содержат об ектные библиотечные модули [для редактирования связей посредством ld(1)]. |
-l библиотека |
Скомпоновать с об ектной библиотекой [для ld(1)]. |
-W фаза,арг1[,арг2 ...] |
Передать аргумент(ы) заданной фазе компиляции, где
фаза - это один из символов [p012al], которые
обозначают, соответственно, препроцессор, первый
проход компилятора, второй проход компилятора, оптимизатор, ассемблер, редактор связей. Например,
по опции -W,a,-m перед вызовом ассемблера будет
вызван макропрепроцессор m4(1). Такая опция имеет
смысл для файлов, содержащих ассемблерные вставки. |
-S | Скомпилировать указанные C-программы и поместить
результат на языке ассемблера в соответствующие
файлы с расширением .s (в этом случае об ектные
модули не создаются). |
-E | Указанные C-программы обработать только препроцессором cpp(1) и результат направить на стандартный
вывод. |
-P | Указанные C-программы обработать только препроцессором cpp(1) и результат поместить в соответствующие файлы с расширением .i. |
-H | Выдать в стандартный протокол составные имена всех
участвующих в компиляции включаемых файлов. |
-D имя |
Определить имя для препроцессора. Этот механизм
используется в условных директивах препроцессора,
так как позволяет определять имена за пределами
исходного текста. |
-U имя |
Сделать имя неопределенным для препроцессора. |
-I каталог |
Изменить алгоритм поиска включаемых (посредством
директивы #include) файлов, имена которых не начинаются с символа /, а именно: сначала искать в
указанном каталоге, а затем уже в каталогах стандартного списка. Так, включаемые файлы, чьи имена
заданы в двойных кавычках, сначала ищутся в каталоге, содержащем файл, затем в каталогах, указанных с помощью опции -I, а затем уже в каталогах
стандартного списка. Включаемые файлы, чьи имена
заданы в угловых скобках, не ищутся в каталоге,
содержащем файл. |
-B цепочка_символов |
Получать составные имена программ, заменяющих
препроцессор, компилятор, ассемблер и редактор
связей, путем конкатенации цепочки_символов с
окончаниями cpp, c0, c1, optim, as и ld. Если цепочка_символов пуста, она трактуется как /lib/o. |
-t [p012al] |
В файлах, имена которых заданы с помощью опции -B,
искать только требуемые компилятор, оптимизатор,
ассемблер и редактор связей. Если отсутствует опция -B, то цепочка_символов берется равной /lib/n.
Указание опции -t "" эквивалентно -t p012. |
-w | Подавить все предупреждающие сообщения. |
-# | Внутренний флаг отладки; выдавать название каждой
выполняемой фазы компиляции. Если флаг задан дважды, то фазы не выполняются, а только распечатываются их названия. |
Остальные аргументы рассматриваются как опции редактора
связей, имена об ектных модулей, совместимых с C-программами (обычно эти модули получены в результате предшествующих запусков компилятора), или, возможно, библиотек C-совместимых программ. Эти программы, вместе с
результатами текущей компиляции, обрабатываются редактором связей, и созданная выполняемая программа, если
не указана опция редактора связей -o, помещается в файл
a.out.
С появлением версии 5 операционной системы UNIX стандарт языка C был расширен. Теперь имена переменных могут иметь произвольную длину. Этот стандарт поддерживается на компьютерах семейства M68000. Опция -T заставляет компилятор обрезать длинные имена для обеспечения
совместимости с более ранними версиями.
ОКРУЖЕНИЕ
- SHLIB
- Если SHLIB имеет значение YES, будет использоваться разделяемая версия библиотеки libc.
- STACKCHECK
- Если STACKCHECK имеет значение ON, порождаются команды для контроля стека.
- DBLALIGN
- Если DBLALIGN имеет значение YES, переменные размещаются с границы 32-битного слова, иначе - с
границы 16-битного слова.
- STALIGN
- Если и STALIGN, и DBLALIGN имеют значение YES, то
компоненты структур будут размещаться с границы
32-битного слова (по умолчанию, с границы 16-битного слова).
- FP
- Если переменная FP имеет значение M68881, компилятор генерирует инструкции для сопроцессора
MC68881, поддерживающего арифметику вещественных
чисел. Если результат какой-либо функции является
вещественным, он возвращается только в регистре
%fp0. Если переменная FP равна M68881u, вещественные значения возвращаются еще и в регистрах %d0/
%d1 для совместимости со старыми библиотеками.
Компилятор выбирает соответствующие версии библиотек
libc и libm согласно значениям переменных окружения FP
и SHLIB.
ФАЙЛЫ
файл.c Исходный файл.
файл.o Об ектный файл.
файл.s Ассемблерный файл.
a.out Результат работы редактора связей.
/usr/tmp/ctm* Временные файлы.
/lib/cpp Препроцессор.
/lib/c[01] Две фазы компиляции.
/lib/optim Оптимизатор.
/bin/as Ассемблер as(1).
/bin/ld Редактор связей ld(1).
/lib/crt1.o
/lib/crtn.o Стандартная программа инициализации.
/lib/mcrt0.o Программа инициализации профилирования.
/lib/libc.a Стандартная библиотека, см. раздел 3.
/lib/libm.a Математическая библиотека, см. раздел 3.
/lib/lib*_s.a Разделяемые версии библиотек.
/lib/lib*881.a Версии библиотек для сопроцессора
арифметики вещественных чисел.
/lib/lib*881u.a Универсальные версии библиотек.
/usr/lib/libp/*.a Версии библиотек для профилирования.
СМ. ТАКЖЕ
as(1), cpp(1), ld(1), prof(1), sdb(1).
ДИАГНОСТИКА
Диагностика, вырабатываемая компилятором языка C, может
быть иногда не очень ясной. Некоторые сообщения могут
быть выданы ассемблером или редактором связей.
ПРЕДОСТЕРЕЖЕНИЯ
По умолчанию значение, возвращаемое из C-программы, является абсолютно случайным. Есть только два способа
возвратить определенное значение - явно воспользоваться
системным вызовом exit [см. exit(2)] или выйти из функции main( ) с помощью конструкции return выражение.
|
 |
 |
 |
|
 |
 |
 |
Новости мира IT:
- 02.02 - Власти РФ согласовали сделку по продаже «Билайна» российскому топ-менеджменту — акции компании выросли
- 02.02 - Сергей Брин снова начал работать программистом в Google
- 02.02 - МТС начнёт выпускать в Твери автомобильные мультимедийные системы с навигацией
- 02.02 - В России возник дефицит чипов для документов — проблема затронула загранпаспорта нового образца
- 01.02 - Microsoft прекратила прямые продажи Windows 10
- 01.02 - «Яндекс» интегрирует в поиск и другие сервисы свой аналог ChatGPT до конца года
- 01.02 - Солнце и ветер дали Европе больше электроэнергии, чем любой другой источник в 2022 году
- 01.02 - Google тестирует на своих сотрудниках потенциальных конкурентов ChatGPT, включая бот Apprentice Bard
- 01.02 - Создатель ChatGPT разработал инструмент для выявления текстов, написанных ИИ
- 30.01 - Роскомнадзор получил более 44 тыс. жалоб о неправомерной обработке персональных данных в 2022 году
- 30.01 - На Apple подали в суд из-за сбора данных пользователей
- 30.01 - «Ростелеком», возможно, интересуется покупкой «Мегафона»
- 30.01 - В идеале Apple стремится создать очки дополненной реальности, которые можно носить весь день
- 30.01 - Российские мобильные операторы перешли на отечественную техподдержку
- 30.01 - Продажа «Билайна» российскому топ-менеджменту затягивается
- 27.01 - «Яндекс» попал в десятку самых посещаемых сайтов в мире
- 27.01 - В списке кредиторов криптобиржи FTX оказались Apple, Google, Amazon, Microsoft, а также авиакомпании, СМИ и университеты
- 27.01 - IBM и SAP показали хорошие квартальные результаты, но всё равно сокращают рабочие места
- 27.01 - От антимонопольного иска против Google выиграет Apple и другие компании
- 26.01 - Власти США подали иск, чтобы заблокировать сделку между Microsoft и Activision Blizzard
Архив новостей
|
 |
 |
 |
|
 |
 |
 |
|
|
 |
 |
|