命令

make distclean
make clean
make xxx_defconfig
make menuconfig
make xxx.config

编译kernel

- 注意:

  • 默认情况下,rv1106_defconfig使用的是rv1106g-evb1-v11-spi-nand-cvr.dts设备树

- 配置交叉编译器

在kernel顶层makefile添加

ARCH = arm
CROSS_COMPILE = arm-linux-gnueabihf-

- 配置xxx_defconfig(必须)通过下面的合并xxx.config也能实现

CONFIG_MTD=y
CONFIG_MTD_NAND=y
CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_UBI=y
CONFIG_UBIFS_FS=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_OF_PARTS=y
CONFIG_SPI_ROCKCHIP_SFC=y

- 选择xxx_defconfig

kernel顶层执行:

make rv1106_defconfig

- 合并xxx.config

这一步主要是将自定义或者其他的xxx.config合并到现有的kernel根目录下的**.config**

又称:基础 defconfig + 若干 fragment

make rv1106-nand.config
make rv1106-cvr.config #或 make rv1106-evb.config

工作原理:

  • rv1106_defconfig 会生成基础的 .config 文件
  • rv1106-nand.config 会被识别为配置片段(fragment),通过 merge_config.sh 脚本合并到现有的 .config
  • 合并后会自动执行 olddefconfig 来解决依赖关系

- 执行编译

  • 编译所有

    make -j16
    
  • 只编译设备树

    make dtbs
    
  • 编译单个设备树

    设备树名通常与对应的 .dts 文件名相同

    make <dts文件名>.dtb
    

编译结果:

  • arch/arm/boot/zImage文件
  • arch/arm/boot/dts/* 所有设备树文件
    • rv1106_defconfig使用的是rv1106g-evb1-v11-spi-nand-cvr.dts设备树

Linux 内核的标准构建目标就是这些:

  • zImage / Image
  • dtbs
  • modules