3.19 Переменные окружения, влияющие на GCC
В этом разделе описываются несколько переменных окружения, которые влияют на работу GCC. Некоторые из них задают каталоги или префиксы для поиска различных типов файлов. Другие используются для задания других аспектов среды компиляции.
Обратите внимание, что вы также можете указать места поиска, используя опции, такие как -B, -I и -L (см. Параметры каталогов). Они имеют приоритет над местами, указанными с помощью переменных окружения, которые, в свою очередь, имеют приоритет над местами, указанными в конфигурации GCC. См. Управление драйвером компиляции gcc.
-
LANGLC_CTYPE LC_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в соответствии с локалью по умолчанию для распознавания и перевода многобайтовых символов. - ‘
Некоторые дополнительные переменные окружения влияют на поведение предварительной обработки.
-
CPATHC_INCLUDE_PATHCPLUS_INCLUDE_PATHOBJC_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. Однако, зависимость от основного входного файла опущена. См. Опции предварительной обработки.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Environment-Variables.html