1 编译内核
JackA1ltman edited this page 2026-04-04 23:24:57 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

编译内核

基础编译 · 第三步

小米 Mix2s 设备的第三方系统 Evolution X 10 内核为例:

  • 源码地址:https://github.com/Evolution-X-Devices/kernel_xiaomi_sdm845
  • 分支:vic

选用 AOSP Clang 12Google GCC 4.9,假设目录结构如下:

/home/username/
├── Clang/clang_aosp_12/bin/
├── Gcc/
│   ├── google_gcc_arm/bin/
│   └── google_gcc_arm64/bin/
└── Kernel/evox_mix2s_a15/

第一步:确定 defconfig 文件

defconfig 文件位于内核源码的 arch/arm64/configs/ 目录下,通常命名规则为:

  • 设备代号_defconfig
  • 内核命名_defconfig
  • 被修改时间最晚的 defconfig 文件

本例说明:需合并两个 config 文件:

  • vendor/mi845_defconfig:负责基础小米 config 项
  • vendor/polaris.config:负责 Mix2s 专属驱动 config 项

第二步:生成 .config 文件

export PATH=/home/username/Clang/clang_aosp_12/bin:$PATH

make ARCH=arm64 O=out CC="clang" \
  CROSS_COMPILE="/home/username/Gcc/google_gcc_arm64/bin/aarch64-linux-android-" \
  CROSS_COMPILE_ARM32="/home/username/Gcc/google_gcc_arm/bin/arm-linux-androideabi-" \
  CLANG_TRIPLE=aarch64-linux-gnu- LD=ld.lld \
  vendor/mi845_defconfig vendor/polaris.config
参数 说明
ARCH=arm64 编译目标架构
O=out 编译输出目录,避免与源码混淆
CROSS_COMPILE 交叉编译器GCC ARM64路径
CROSS_COMPILE_ARM32 交叉编译器GCC ARM路径
CLANG_TRIPLE 备用 Clang主 Clang 失败时回退
LD=ld.lld 替换链接器为 Clang 自带链接器

执行成功后将在 out/ 目录下生成 .config 文件。

第三步:正式编译

make -j$(nproc --all) ARCH=arm64 O=out CC="clang" \
  CROSS_COMPILE="/home/username/Gcc/google_gcc_arm64/bin/aarch64-linux-android-" \
  CROSS_COMPILE_ARM32="/home/username/Gcc/google_gcc_arm/bin/arm-linux-androideabi-" \
  CLANG_TRIPLE=aarch64-linux-gnu- LD=ld.lld \
  vendor/mi845_defconfig vendor/polaris.config 2>&1 | tee error.log
参数 说明
-j$(nproc --all) 调用全部核心,也可指定如 -j4
2>&1 | tee error.log 将错误输出同步写入 error.log

编译时间约 530 分钟2 核心机器可能需要 1 小时以上)。出现以下输出则代表编译成功:

OBJCOPY arch/arm64/boot/Image.gz

若无 Error 2 出现,并存在上述 OBJCOPY 行,则编译成功,内核文件位于 out/arch/arm64/boot/