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-7.5.0/gcc/Environment-Variables.html