Spec-Zone.ru › GCC 10

Далее: Использование предварительно скомпилированных заголовков, Предыдущее: Указание дочерних процессов и переключателей, передаваемых им, Вверх: Команды GCC [Оглавление][Индекс]

3.21 Переменные окружения, влияющие на GCC ¶

В этом разделе описаны несколько переменных окружения, влияющих на работу GCC. Некоторые из них задают каталоги или префиксы для поиска различных типов файлов. Другие используются для указания других аспектов среды компиляции.

Обратите внимание, что вы также можете указать места поиска, используя такие опции, как -B, -I и -L (см. Параметры поиска каталогов). Они имеют приоритет над местами, указанными в переменных окружения, которые, в свою очередь, имеют приоритет над теми, что указаны в настройках GCC. См. Управление драйвером компиляции gcc в документации по внутренним механизмам GNU Compiler Collection (GCC).

LANG
LC_CTYPE
LC_MESSAGES
LC_ALL

Эти переменные окружения управляют тем, как GCC использует информацию о локализации, что позволяет GCC работать с различными национальными соглашениями. GCC проверяет категории локали LC_CTYPE и LC_MESSAGES, если это было настроено. Эти категории локали могут быть установлены в любое значение, поддерживаемое вашей установкой. Типичным значением является ‘en_GB.UTF-8’ для английского языка в Соединённом Королевстве, закодированного в UTF-8.

Переменная окружения LC_CTYPE задаёт классификацию символов. GCC использует её для определения границ символов в строке; это необходимо для некоторых многобайтовых кодировок, содержащих кавычки и escape-символы, которые в противном случае интерпретируются как конец строки или escape.

Переменная окружения LC_MESSAGES задаёт язык, используемый в диагностических сообщениях.

Если переменная окружения LC_ALL установлена, она переопределяет значение LC_CTYPE и LC_MESSAGES; в противном случае LC_CTYPE и LC_MESSAGES по умолчанию принимают значение переменной окружения LANG. Если ни одна из этих переменных не установлена, GCC использует традиционное поведение C на английском языке.

TMPDIR

Если TMPDIR установлена, она задаёт каталог для временных файлов. GCC использует временные файлы для хранения выходных данных одного этапа компиляции, которые будут использоваться как входные данные на следующем этапе: например, выходные данные препроцессора, которые являются входными данными для собственно компилятора.

GCC_COMPARE_DEBUG

Установка GCC_COMPARE_DEBUG почти эквивалентна передаче -fcompare-debug драйверу компилятора. Для получения более подробной информации см. документацию по этой опции.

GCC_EXEC_PREFIX

Если GCC_EXEC_PREFIX установлена, она указывает префикс, который будет использоваться в именах подпрограмм, выполняемых компилятором. При объединении этого префикса с именем подпрограммы не добавляется слэш, но вы можете указать префикс, заканчивающийся слэшем, если хотите.

Если GCC_EXEC_PREFIX не установлена, GCC пытается определить подходящий префикс на основе пути, с которым оно вызывается.

Если GCC не может найти подпрограмму, используя указанный префикс, она пытается найти её в обычных местах.

Значение GCC_EXEC_PREFIX по умолчанию — prefix/lib/gcc/, где prefix — префикс установленного компилятора. Во многих случаях prefix — это значение prefix, когда вы запускали скрипт configure.

Другие префиксы, указанные с -B, имеют приоритет над этим префиксом.

Этот префикс также используется для поиска файлов, таких как crt0.o, которые используются для компоновки.

Кроме того, префикс используется нестандартным образом для поиска каталогов заголовков. Для каждого стандартного каталога, имя которого обычно начинается с ‘/usr/local/lib/gcc’ (точнее, со значением GCC_INCLUDE_DIR), GCC пытается заменить это начало указанным префиксом, чтобы получить альтернативное имя каталога. Таким образом, с -Bfoo/, GCC ищет foo/bar перед тем, как искать стандартный каталог /usr/local/lib/bar. Если стандартный каталог начинается с настроенного prefix, то значение prefix заменяется на GCC_EXEC_PREFIX при поиске заголовков.

COMPILER_PATH

Значение COMPILER_PATH — это список каталогов, разделённых двоеточием, подобно PATH. GCC пытается найти подпрограммы в указанных каталогах, если они не найдены с помощью GCC_EXEC_PREFIX.

LIBRARY_PATH

Значение LIBRARY_PATH — это список каталогов, разделённых двоеточием, подобно PATH. Когда GCC настроен как родной компилятор, он пытается найти специальные файлы компоновщика в указанных каталогах, если они не найдены с помощью GCC_EXEC_PREFIX. Компоновка с помощью GCC также использует эти каталоги при поиске обычных библиотек для опции -l (но каталоги, указанные с -L, имеют приоритет).

LANG

Эта переменная используется для передачи информации о локализации компилятору. Один из способов использования этой информации — определение набора символов, используемого при разборе символьных литералов, строковых литералов и комментариев в C и C++. Когда компилятор настроен на поддержку многобайтовых символов, следующие значения для LANG распознаются:

‘C-JIS’

Распознаются символы JIS.

‘C-SJIS’

Распознаются символы SJIS.

‘C-EUCJP’

Распознаются символы EUCJP.

Если LANG не определена или имеет другое значение, то компилятор использует mblen и mbtowc, определённые значениями по умолчанию локали, для распознавания и преобразования многобайтовых символов.

Некоторые дополнительные переменные окружения влияют на поведение препроцессора.

CPATH ¶
C_INCLUDE_PATH ¶
CPLUS_INCLUDE_PATH ¶
OBJC_INCLUDE_PATH ¶

Значение каждой переменной — список каталогов, разделённых специальным символом, подобно PATH, для поиска заголовков. Специальный символ PATH_SEPARATOR зависит от платформы и определяется при сборке GCC. Для платформ на базе Microsoft Windows это точка с запятой, а для почти всех остальных платформ — двоеточие.

CPATH указывает список каталогов, которые будут просматриваться так, как если бы они были указаны с -I, но после любых путей, заданных с -I опциями в командной строке. Эта переменная окружения используется независимо от языка, который обрабатывается препроцессором.

Остальные переменные окружения применяются только при обработке указанного языка. Каждая переменная указывает список каталогов, которые будут просматриваться так, как если бы они были указаны с -isystem, но после любых путей, заданных с -isystem опциями в командной строке.

Во всех этих переменных пустой элемент указывает компилятору искать в текущем рабочем каталоге. Пустые элементы могут находиться в начале или конце пути. Например, если значение CPATH равно :/special/include, это имеет тот же эффект, что и ‘-I. -I/special/include’.

DEPENDENCIES_OUTPUT ¶

Если эта переменная установлена, её значение указывает, как выводить зависимости для Make на основе заголовков, не являющихся системными, обработанных компилятором. Системные заголовки игнорируются в выводе зависимостей.

Значение DEPENDENCIES_OUTPUT может быть просто именем файла, в этом случае правила Make записываются в этот файл, угадывая имя целевого файла по имени исходного файла. Или значение может иметь вид ‘file target’, в этом случае правила записываются в файл file с использованием target в качестве целевого имени.

Другими словами, эта переменная окружения эквивалентна объединению опций -MM и -MF (см. Параметры, управляющие препроцессором), а также с дополнительным переключателем -MT.

SUNPRO_DEPENDENCIES ¶

Эта переменная такая же, как и DEPENDENCIES_OUTPUT (см. выше), за исключением того, что системные заголовки не игнорируются, поэтому она подразумевает -M, а не -MM. Однако зависимость от основного входного файла опущена. См. Параметры управления препроцессором.

SOURCE_DATE_EPOCH ¶

Если эта переменная установлена, её значение указывает отметку времени UNIX, которая будет использоваться вместо текущей даты и времени в макросах __DATE__ и __TIME__, чтобы встраиваемые метки времени стали воспроизводимыми.

Значение SOURCE_DATE_EPOCH должно быть меткой времени UNIX, определённой как количество секунд (исключая високосные секунды) с 01 января 1970 года 00:00:00, представленной в ASCII; идентично выводу ‘date +%s’ на GNU/Linux и других системах, поддерживающих расширение %s в команде date.

Значение должно быть известной отметкой времени, такой как время последнего изменения исходного кода или пакета, и оно должно устанавливаться процессом сборки.

Далее: Использование предварительно скомпилированных заголовков, Предыдущее: Указание дочерних процессов и переключателей, передаваемых им, Вверх: Команды GCC [Оглавление][Индекс]

END_OF_DOCUMENT_MARKER ```

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/gcc/Environment-Variables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API