Spec-Zone.ru › GCC 11

Далее: Использование предварительно скомпилированных заголовков, Предыдущее: Указание дочерних процессов и переключателей для них, Вверх: Параметры командной строки 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 использует её для определения границ символов в строке; это необходимо для некоторых многобайтовых кодировок, содержащих кавычки и управляющие символы, которые в противном случае интерпретируются как конец строки или управляющий символ.

Переменная среды 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, как определено в локальной конфигурации, для распознавания и трансляции многобайтовых символов.

GCC_EXTRA_DIAGNOSTIC_OUTPUT

Если GCC_EXTRA_DIAGNOSTIC_OUTPUT установлена в одно из следующих значений, дополнительный текст будет выводиться в stderr при выводе подсказок исправления. -fdiagnostics-parseable-fixits и -fno-diagnostics-parseable-fixits имеют приоритет над этой переменной среды.

‘fixits-v1’

Выводит разбираемые подсказки исправления, эквивалентные -fdiagnostics-parseable-fixits. В частности, столбцы выражаются как количество байтов, начиная с байта 1 для начального столбца.

‘fixits-v2’

Как fixits-v1, но столбцы выражаются в виде экранных столбцов, как в -fdiagnostics-column-unit=display.

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

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 [Содержание][Индекс]

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

Spec-Zone.ru

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