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