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