3.20 Переменные среды, влияющие на 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 использует её для определения границ символов в строке; это необходимо для некоторых многобайтовых кодировок, содержащих символы кавычек и экранирования, которые в противном случае интерпретируются как конец строки или символ экранирования.Переменная среды
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. Однако зависимость от основного входного файла опускается. См. Опции препроцессора.
Далее: Прекомпилированные заголовки, Предыдущее: Файлы спецификаций, Наверх: Вызов GCC [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/Environment-Variables.html