2.3. 重要命令¶
2.3.1. 编译命令¶
make <board>_defconfig
make all
2.3.2. 常用辅助命令¶
make list (make l) --> 列出当前可用的 <board>_defconfig
make menuconfig (make m) --> 对 SDK 进行配置
make uboot-menuconfig (make um) --> 对 U-Boot 进行配置
make linux-menuconfig (make km) --> 对 Linux 内核进行配置
make busybox-menuconfig --> 对 Busybox 进行配置
警告
make 命令不要使用 -j
参数。
Luban 在编译过程中,已经默认使用了 -j0
参数,即根据系统的 CPU 核心数量,
动态分配编译的线程。
如果外部再提供 -j
参数,会导致 SDK 编译过程中出现一些高层次的目标编译
不同步的错误。
2.3.3. 使用举例¶
2.3.3.1. make list¶
列出当前 SDK 所有可用的 defconfig
Built-in configs:
d211_initramfs_defconfig - Build for d211_initramfs
d211_per1_mmc_defconfig - Build for d211_per1_mmc
d211_per2_spinand_defconfig - Build for d211_per2_spinand
d211_per2_spinor_defconfig - Build for d211_per2_spinor
d211_fpga_mmc_defconfig - Build for d211_fpga_mmc
2.3.3.2. make d211_per1_mmc_defconfig¶
应用指定的项目配置。
小技巧
默认情况下,使用 output 作为项目的工作/输出目录。 如果需要指定一个专用的工作/输出目录,可以使用 O=<dir> 来指定目录。例如:
make O=per1 d211_per1_mmc_defconfig
当指定了 O=per1 ,后续所有与该项目相关的 make 操作,都需要加上该选项,或者 cd per1 之后,在 per1 目录中进行编译。
2.3.3.4. make all¶
编译整个项目,包括 Bootloader、Kernel、应用层的 Pacakge、RootFS以及生成最终的烧录镜像文件。
注意
不需要使用 make -jN 进行编译,Luban 编译框架默认已经使用了 make -j0,即根据主机的 CPU 核心个数决定使用多少个线程进行编译,外部不需要再提供 -j 参数。
小技巧
SDK 具有源码修改检测功能,在修改了 SDK 中任意包的源码之后再执行 make all
会触发该包的 rebuild
。通常是增量编译。
2.3.4. 快捷命令¶
对于一些高频输入的命令,这里做了一个简短的快捷命令映射
make m -> make menuconfig
make k -> make linux-rebuild
make km -> make linux-menuconfig
make b -> make uboot-rebuild
make u -> make uboot-rebuild
make bm -> make uboot-menuconfig
make um -> make uboot-menuconfig
make f -> make all
2.3.5. 其他重要命令¶
make show-targets --> 查看当前项目有哪些编译目标
make <pkg>-extract --> 仅对源码包进行解压
make <pkg>-patch --> 仅对源码包进行 patch(如果有的话)
make <pkg> --> 完成从 extract/patch/../build/install
make <pkg>-reconfigure --> 对该源码包重新执行配置、编译、安装
make <pkg>-rebuild --> 对该源码包进行重新编译
make <pkg>-reinstall --> 对该源码包进行重新安装
make <pkg>-prebuilt --> 为该源码包生成预编译二进制压缩包
make <pkg>-clean --> 删除该源码包的所有编译输出
make <pkg>-distclean --> 删除该源码包的源码