Spec-Zone.ru › GCC 15

3.22 Переменные среды, влияющие на GCC

В этом разделе описаны несколько переменных среды, влияющих на работу GCC. Некоторые из них задают каталоги или префиксы, используемые при поиске различных типов файлов. Другие служат для задания иных аспектов среды компиляции.

Обратите внимание, что места для поиска также можно задавать с помощью таких параметров, как -B, -I и -L (см. Параметры поиска каталогов). Они имеют приоритет над местами, заданными с помощью переменных среды, а те, в свою очередь, имеют приоритет над местами, заданными конфигурацией GCC. См. раздел Управление драйвером компиляции gcc в документе «Внутреннее устройство коллекции компиляторов GNU (GCC)».

LANG
LC_CTYPE
LC_MESSAGES
LC_ALL

Эти переменные среды управляют использованием GCC сведений о локали, которые позволяют GCC работать с различными национальными соглашениями. GCC проверяет категории локали LC_CTYPE и LC_MESSAGES, если он был настроен для этого. Для этих категорий локали можно задать любое значение, поддерживаемое вашей системой. Типичное значение для английского языка Великобритании в кодировке UTF-8 — ‘en_GB.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, определённые локалью по умолчанию, для распознавания и преобразования многобайтовых символов.

GCC_EXTRA_DIAGNOSTIC_OUTPUT

Если для GCC_EXTRA_DIAGNOSTIC_OUTPUT задано одно из следующих значений, при выводе подсказок по исправлению в stderr будет выведен дополнительный текст. Параметры -fdiagnostics-parseable-fixits и -fno-diagnostics-parseable-fixits имеют приоритет над этой переменной среды.

‘fixits-v1’

Выводить подсказки по исправлению в формате, пригодном для разбора; это равносильно параметру -fdiagnostics-parseable-fixits. В частности, столбцы задаются количеством байтов, начиная с байта 1 для первого столбца.

‘fixits-v2’

Как fixits-v1, но столбцы задаются в экранных позициях, как при использовании -fdiagnostics-column-unit=display.

На поведение препроцессора влияют и некоторые дополнительные переменные среды.

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 Jan 1970 00:00:00 в ASCII; оно должно совпадать с выводом date +%s в GNU/Linux и других системах, поддерживающих расширение %s в команде date.

Следует задать известную метку времени, например время последнего изменения исходного файла или пакета, и устанавливать её в процессе сборки.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Environment-Variables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API