1.6 KiB
1.6 KiB
Linux Kernel 开发总结
1. 编译 Kernel
1.1. 常用命令
配置内核时一定要加 ARCH 参数,否则可能出现错误配置。
# 通过 arch/arm64/configs/xxx_defconfig 生成 .config
make ARCH=arm64 xxx_defconfig
# 通过 .config 生成 ./defconfig
make ARCH=arm64 savedefconfig
# 进入 menuconfig 对内和进行配置。
make ARCH=arm64 menuconfig
# 指定 LOCALVERSION(详见《内核版本添加字符》) 并以 n 个进程进行编译。
make LOCALVERSION="" -j<n>
# 编译独立内核模块并安装到指定目录下。
make modules_install INSTALL_MOD_PATH=<target dir>
# 清除之前编译的可执行文件及配置文件。
make clean
# 类似 make clean,但同时也将configure生成的文件全部删除掉,包括Makefile。
make distclean
1.2. make menuconfig 常用快捷键
- /:搜索;
- shift+<关键字>:在当前页面快速查找带有<关键字>的配置项。
2. 独立模块的编译
有些模块在开发时往往独立于内核进行组织和编译,其编译方法如下:
# 独立于内核源码编译内核外部模块,-C 指定内核源码目录(必须已经编译过),M 指定外部模块所在源码目录
make -C <kernel source dir> M=<modules dir> modules
# 清除外部模块的编译结果
make -C <kernel source dir> M=<modules dir> clean
以上命令经常以下列形式写入到 Makefile 中:
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean