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