3.21 Переменные окружения, влияющие на GCC
В этом разделе описываются несколько переменных окружения, влияющих на работу GCC. Некоторые из них определяют каталоги или префиксы для поиска различных типов файлов. Другие задают другие аспекты среды компиляции.
Обратите внимание, что вы также можете указать места поиска с помощью опций, таких как -B, -I и -L (см. Опции каталогов). Эти опции имеют приоритет над местами, указанными с помощью переменных окружения, которые, в свою очередь, имеют приоритет над указанными в конфигурации GCC. См. Управление драйвером компиляции gcc в документации по внутреннему устройству GNU Compiler Collection (GCC).
LANGLC_CTYPELC_MESSAGESLC_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-12.2.0/gcc/Environment-Variables.html