Подробный гайд: Инструменты компиляции для сборки ядра Linux

Полный список инструментов для сборки ядра Linux: компиляторы, Kbuild, библиотеки? пакеты для дистрибутивов. Гайд по установке, настройке, ускорению компиляции.

2026.04.24                  


Подробный гайд: Инструменты компиляции для сборки ядра LinuxПодробный гайд: Инструменты компиляции для сборки ядра Linux Сборка ядра Linux требует набора инструментов, который в большинстве дистрибутивов устанавливается одной командой, но при работе с минимальными окружениями, кросс-компиляцией или специфичными конфигурациями важно знать полный перечень зависимостей.

Официальный источник:

В дереве исходников ядра всегда есть актуальный список требований:
  • Documentation/process/changes.rst (или Documentation/admin-guide/changes.rst в новых версиях).

1. Базовый обязательный набор

Инструмент Назначение Пакет(ы)
gcc Основной компилятор C gcc, gcc-multilib (для 32-бит совместимости)
binutils Линкер ld, ассемблер as, objcopy, strip, ar binutils, binutils-dev
make Система сборки ядра (Kbuild) make, make-guile (иногда)
flex Лексический анализатор для Kconfig flex
bison Генератор парсеров для Kconfig bison
libncurses-dev / ncurses-devel Псевдографический конфигуратор menuconfig libncurses5-dev, libncursesw5-dev или ncurses-devel
bc Калькулятор с произвольной точностью (используется в Makefile) bc
openssl / libssl-dev Подпись модулей, генерация сертификатов openssl, libssl-dev или openssl-devel
perl Вспомогательные скрипты сборки perl
python3 + python3-dev Скрипты Kbuild, BPF, CO-RE, генерация заголовков python3, python3-dev

2. Зависимости для современных функций ядра (6.x+)

Инструмент Зачем нужен Пакет
libelf-dev / elfutils-libelf-devel Разбор ELF, поддержка BPF, kprobe, livepatch libelf-dev или elfutils-libelf-devel
dwarves (pahole) Генерация BTF-информации для BPF и отладки dwarves (или pahole)
pkg-config / pkgconf Поиск библиотек и заголовков при конфигурации pkg-config или pkgconf
kmod Управление модулями (modprobe, lsmod и др.) kmod
tar, gzip, bzip2, xz, zstd Распаковка исходников и создание пакетов tar, gzip, bzip2, xz-utils, zstd
fakeroot Сборка .deb/.rpm без прав root fakeroot

3. Опциональные, но крайне рекомендуемые

Инструмент Назначение
ccache Кеширование объектных файлов → ускорение повторных сборок на 3–10×
clang + llvm + lld Альтернативная тулчейн-цепочка (поддерживается ядром с 5.0+, рекомендуется для BPF и sanitizers)
distcc / icecream Распределённая сборка по сети
sparse Статический анализатор кода ядра (make C=1)
pahole >= 1.21 Обязательно для BTF в ядрах 5.15+
flex/bison (современные версии) Требуются для новых синтаксических конструкций Kconfig

4. Установка по дистрибутивам

Ubuntu / Debian

sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev \
                 bc python3-dev pkg-config fakeroot ccache dwarves kmod zstd \
                 libudev-dev libmount-dev libblkid-dev

build-essential уже включает gcc, make, binutils, libc6-dev.

Fedora / RHEL / Rocky / AlmaLinux

sudo dnf groupinstall "Development Tools" "C Development Tools and Libraries"
sudo dnf install ncurses-devel bison flex openssl-devel elfutils-libelf-devel \
                 bc python3-devel pkgconf-pkg-config fakeroot ccache dwarves \
                 kmod zstd libudev-devel libmount-devel libblkid-devel

Arch Linux / Manjaro

sudo pacman -S base-devel ncurses bison flex openssl libelf bc python pkgconf \
               fakeroot ccache pahole kmod zstd systemd-libs util-linux-libs

base-devel покрывает gcc, make, binutils, pkgconf, fakeroot.

openSUSE

sudo zypper install -t pattern devel_C_C++ devel_kernel
sudo zypper install bc python3-devel pkg-config ccache dwarves kmod zstd \
                    libopenssl-devel libelf-devel flex bison ncurses-devel

5. Проверка установки

Перейдите в распакованные исходники ядра и выполните:

gcc --version
make --version
ld -v
flex --version
bison --version
bc --version
python3 --version
pahole --version   # должен быть ≥ 1.21 для BTF

Запустите тестовую конфигурацию:

make defconfig      # создаёт .config под текущую архитектуру
make menuconfig     # проверяет работу ncurses/kconfig

Если ошибок нет → тулчейн готов.


6. Советы по сборке

Задача Команда / Настройка
Многопоточная сборка make -j$(nproc) или make -j$(nproc) LLVM=1 (для Clang)
Включить ccache export CC="ccache gcc" перед make
Сборка с Clang/LLVM make LLVM=1 LLVM_IAS=1 -j$(nproc)
Создание deb-пакетов make bindeb-pkg -j$(nproc)
Создание rpm-пакетов make binrpm-pkg -j$(nproc)
Кросс-компиляция (ARM64) make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
Очистка перед новой сборкой make mrproper (удаляет .config и все артефакты)
Быстрая пересборка модулей make modules -j$(nproc)

Никогда не запускайте make от root. Сборка ядра не требует прав суперпользователя. Установка (make modules_install, make install) требует sudo.


7. Диагностика типичных ошибок

Ошибка Причина Решение
Makefile:xxx: *** missing separator. Неправильный make или повреждённый архив Перепроверьте версию make, распакуйте заново
scripts/kconfig/lxdialog/dialog.h:38: fatal error: curses.h: No such file Не установлен ncurses-dev sudo apt install libncurses5-dev libncursesw5-dev
error: pahole version ... is too old Старый dwarves Установите из backports или соберите dwarves ≥ 1.21
fatal error: openssl/opensslv.h: No such file Нет заголовков OpenSSL libssl-dev / openssl-devel
scripts/Makefile.build:xxx: recipe for target '.../bpf' failed Отсутствует libelf-dev или python3-dev Установите соответствующие -dev пакеты

Итоговый чек-лист

  • [ ] Компилятор (gcc или clang + llvm)
  • [ ] Binutils (ld, as, objcopy)
  • [ ] GNU Make
  • [ ] flex, bison, bc
  • [ ] libncurses-dev (или эквивалент)
  • [ ] libssl-dev, libelf-dev / elfutils-libelf-devel
  • [ ] python3-dev, perl, pkg-config
  • [ ] dwarves (pahole ≥ 1.21)
  • [ ] ccache (опционально, но настоятельно рекомендуется)
  • [ ] Архиваторы: tar, xz, zstd

После установки этих пакетов вы сможете собирать ядро любой ветки (5.10, 6.1, 6.6, 6.12, mainline) без ошибок зависимостей.