Перейти к основному содержимому

Kbuild

к сведению

Выходные файлы

modules.order

Этот файл записывает порядок, в котором модули появляются в Makefiles. Это используется утилитой "modprobe" для детерминированного разрешения имён, которые соответствуют нескольким модулям.

modules.builtin

Этот файл содержит список всех модулей, которые встроены в ядро. Он используется модулем "modprobe", чтобы избежать ошибок при попытке загрузки каких-либо встроенных модулей.

modules.builtin.modinfo

Этот файл содержит информацию о модулях (modinfo), которые встроены в ядро. В отличие от "modinfo" отдельного модуля, тут все поля имеют префикс с именем модуля, к которому относятся.

Переменные окружения

KCPPFLAGS

Дополнительные параметры для передачи во время предварительной обработки. Параметры предварительной обработки будут использоваться во всех случаях, когда kbuild выполняет предварительную обработку, включая сборку файлов на языке C и файлов ассемблера.

KAFLAGS

Дополнительные параметры для кода ассемблера (для встроенного и модулей).

AFLAGS_MODULE

Дополнительные параметры ассемблера для модулей.

AFLAGS_KERNEL

Дополнительные параметры кода ассемблера встроенного в ядро.

KCFLAGS

Дополнительные параметры для компилятора C (для встроенного кода и модулей).

KRUSTFLAGS

Дополнительные параметры для компилятора Rust (для встроенного кода и модулей).

CFLAGS_KERNEL

Дополнительные параметры для $(CC) при компиляции кода, который компилируется как встроенный.

RUSTFLAGS_KERNEL

Дополнительные параметры для $(RUSTC), используемые для компиляции кода, который компилируется как встроенный.

RUSTFLAGS_MODULE

Дополнительные специфичные для модулей параметры для использования с $(RUSTC).

LDFLAGS_MODULE

Дополнительные параметры, используемые для $(LD) при компоновке модулей.

HOSTCFLAGS

Дополнительные флаги, которые нужно передать $(HOSTCC) при компиляции программ хоста.

HOSTCXXFLAGS

Дополнительные флаги, которые нужно передать в $(HOSTCXX) при компиляции программ хоста.

HOSTRUSTFLAGS

Дополнительные флаги, которые нужно передать в $(HOSTRUSTC) при компиляции программ хоста.

HOSTLDFLAGS

Дополнительные флаги, которые нужно передать при компоновке программ хоста.

HOSTLDLIBS

Дополнительные библиотеки, которые нужно скомпоновать при компиляции программ хоста.

USERCFLAGS

Дополнительные параметры, используемые для $(CC) при компиляции пользовательских программ.

USERLDFLAGS

Дополнительные опции, используемые для $(LD) при компоновке пользовательских программ. Пользовательские программы связываются с помощью CC, поэтому $(USERLDFLAGS) должны включать префикс -Wl, при необходимости.

KBUILD_KCONFIG

Для этой переменной среды в качестве значения установите имя "самого верхнего" файла Kconfig. Имя по умолчанию - "Kconfig".

KBUILD_VERBOSE

Установите уровень детализации вывода сообщений kbuild. Может принимать те же значения, что и V=....

Смотрите make help для полного списка значений.

Установка V=... имеет приоритет над KBUILD_VERBOSE.

KBUILD_EXTMOD

Укажите директорию c исходным кодом внешних модулей (при их сборке).

Установка M=... имеет приоритет над KBUILD_EXTMOD.

KBUILD_OUTPUT

Укажите каталог для вывода результатов сборки ядра.

Также можно указать каталог вывода с помощью O=....

Установка O=... имеет приоритет над KBUILD_OUTPUT.

KBUILD_EXTRA_WARN

Укажите дополнительные проверки сборки. Тот же самый параметр можно присвоить, передавая W=... из командной строки.

Смотрите make help для списка поддерживаемых значений.

Установка W=... имеет приоритет над KBUILD_EXTRA_WARN.

KBUILD_DEBARCH

Для цели deb-pkg позволяет переопределять обычную эвристику, используемую deb-pkg. Обычно deb-pkg пытается угадать правильную архитектуру на основе переменной UTS_MACHINE и на некоторых архитектурах также конфигурации ядра. Предполагается (но не проверяется), что значение KBUILD_DEBARCH является допустимой архитектурой Debian.

KDOCFLAGS

Укажите дополнительные флаги (предупреждения/ошибки) для проверки kernel-doc во время сборки, см. scripts/kernel-doc для поддерживаемых флагов. Обратите внимание, что это в настоящее время не применяется к сборке документации.

ARCH

В переменной ARCH укажите архитектуру, для которой собирается ядро.

В большинстве случаев название архитектуры совпадает с названием каталога, который можно найти в каталоге arch/.

Но некоторые архитектуры, такие как x86 и sparc, имеют псевдонимы (aliases).

  • x86: i386 для 32 бит, x86_64 для 64 бит
  • parisc: parisc64 для 64 бит
  • sparc: sparc32 для 32 бит, sparc64 для 64 бит

CROSS_COMPILE

Укажите необязательную фиксированную часть имени файла "binutils". CROSS_COMPILE может быть частью имени файла или полным путем.

CROSS_COMPILE также используется для ccache в некоторых сетапах.

CF

Дополнительные параметры для sparse.

Часто CF используется в командной строке следующим образом:

make CF=-Wbitwise C=2

INSTALL_PATH

INSTALL_PATH указывает, куда поместить обновленные образы ядра и системных карт (system map). По умолчанию это /boot, но вы можете установить другие значения.

INSTALLKERNEL

Скрипт установки, который вызывается при использовании команды "make install". По умолчанию его название - "installkernel".

Cкрипт будет вызван с следующими аргументами:

  • $1 - версия ядра
  • $2 - файл с образом ядра
  • $3 - файл с картой ядра
  • $4 - путь установки по умолчанию (если на задана – используется корневая директория)

Реализация make install зависит от архитектуры и может отличаться от приведенной выше.

INSTALLKERNEL предоставляется для возможности указания пользовательского установщика при кросс-компиляции ядра.

MODLIB

Укажите, куда устанавливать модули. Значение по умолчанию:

$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)

Значение может быть переопределено, в таком случае значение по умолчанию игнорируется.

INSTALL_MOD_PATH

INSTALL_MOD_PATH задает префикс для MODLIB, который используется для переноса каталога модулей, необходимого для корневых сборочных каталогов (build roots). Эта переменная не определена в файле makefile, но аргумент может быть передан команде make при необходимости.

INSTALL_MOD_STRIP

INSTALL_MOD_STRIP, если определена, приведет к удалению отладочных символов из модулей после их установки. Если INSTALL_MOD_STRIP равно "1", то будет использована опция по умолчанию --strip-debug. В противном случае будет использовано значение INSTALL_MOD_STRIP как опции для команды strip.

От авторов перевода

Утилита strip, является частью GNU Binutils и используется для удаления отладочных символов из бинарных файлов.

INSTALL_HDR_PATH

INSTALL_HDR_PATH указывает, куда устанавливаются заголовки пространства пользователя при выполнении команды make headers_*.

Значение по умолчанию:

$(objtree)/usr

$(objtree) - это каталог, в котором сохраняются выходные файлы. Каталог выходных файлов часто устанавливается с помощью опции O=... при запуске программы из командной строки.

Значение может быть переопределено, в таком случае значение по умолчанию игнорируется.

INSTALL_DTBS_PATH

INSTALL_DTBS_PATH указывает, куда устанавливать блобы дерева устройств для переносов, необходимых для корневых сборочных каталогов (build roots). Это не определено в файле make, но аргумент может быть передан в make по необходимости.

KBUILD_ABS_SRCTREE

Kbuild использует относительный путь для указания на дерево, когда это возможно. Например, во время сборки в исходном дереве путь исходного дерева — это "."

Установка этого флага запрашивает от Kbuild использование абсолютного пути к исходному дереву. Есть несколько полезных случаев, когда это необходимо, например, при генерации tag-файлов с абсолютными записями путей и т. д.

KBUILD_SIGN_PIN

Эта переменная позволяет передать пароль или PIN-код в утилиту sign-file при подписи модулей ядра, если приватный ключ этого требует.

KBUILD_MODPOST_WARN

Переменная KBUILD_MODPOST_WARN может быть установлена для избежания ошибок в случае наличия неопределенных символов на этапе окончательной компоновки модуля. Она меняет такие ошибки на предупреждения.

KBUILD_MODPOST_NOFINAL

KBUILD_MODPOST_NOFINAL может быть установлен для пропуска завершающей компоновки модулей. Это полезно только для ускорения тестовой компиляции.

KBUILD_EXTRA_SYMBOLS

Для модулей, которые используют символы из других модулей. Подробнее см. в разделе "Сборка внешних модулей".

ALLSOURCE_ARCHS

Для целей типа tags/TAGS/cscope вы можете указать несколько архитектур, которые будут включены в базы данных, разделенные пробелом. Например:

$ make ALLSOURCE_ARCHS="x86 mips arm" tags

Чтобы сборки на все доступные архитектуры, вы также можете указать "all". Например:

$ make ALLSOURCE_ARCHS=all tags
От авторов перевода

tags файл отличается от TAGS файла тем, что первый предназначен для редакторов Vim и Vi, а второй для Emacs и XEmacs.

Оба являются индексными файлами, которые помогают разработчикам быстро находить определения символов в исходном коде.

IGNORE_DIRS

Для целей tags/TAGS/cscope можно исключить определённые директории, которые не войдут в базу данных, указав их через пробел следующим образом:

$ make IGNORE_DIRS="drivers/gpu/drm/radeon tools" cscope

KBUILD_BUILD_TIMESTAMP

Установка этого значения в строку даты переопределяет отметку времени, использованную в определении UTS_VERSION (uname -v в работающем ядре). Значение должно быть строкой, которая может быть передана команде date -d. Значение по умолчанию - результат выполнения команды date во время сборки.

KBUILD_BUILD_USER, KBUILD_BUILD_HOST

Эти две переменные позволяют заменить строку user@host, отображаемую при загрузке и в /proc/version. Значение по умолчанию - результат команд whoami и host соответственно.

LLVM

Если эта переменная установлена в 1, то Kbuild будет использовать утилиты Clang и LLVM вместо GCC и GNU binutils для сборки ядра.