Linux内核编译
修改Makefile文件,配置交叉编译工具链
修改195和196行为
195 ARCH ?= arm
196 CROSS_COMPILE ?= arm-none-linux-gnueabi-
ARCH:要运行Linux的CPU架构
CROSS_COMPILE:交叉编译器名称
进入arm架构的单板默认配置文件目录:
cd arch/arm/configs/
make s5p64x0_defconfig
make uImage
出现以下错误
1. fatal error: linux/compiler-gcc5.h:No such file or directory错误
(gcc版本与编译的相关版本不一致导致的)
可以
cp /usr/src/linux-headers-4.15.0-142/include/linux/compiler-gcc.h .至 include/linux/
更改名字为compiler-gcc5.h
编译还会报错 把compiler-gcc5.h报错的地方删掉可以编译 (该操作可能会对其他造成影响)
2 "mkimage" command not found - U-Boot images will not be built
执行如下命令可解决sudo apt-get install u-boot-tools
再次编译
Linux内核启动
内核解压(汇编+C)
引导阶段(汇编)
通用内核启动阶段(C)
Linux内核裁剪
图形工具裁剪
删除配置界面的文本 ctrl+backspace
*是选择
M是编译成模块
图形工具裁剪原理分析
Kconfig形成图形界面
./config保存界面配置信息
Makefile根据配置结果选择编译
Makefile 和Kconfig是成对出现的
自定义代码添加配置选项过程
比如添加一个驱动程序
找到驱动程序复制到相应的位置 这里是字符驱动 复制到drivers/char/中
修改driver/char/Kconfig
修改driver/char/Makefile
obj-$(CONFIG_BEEP) += beep.o(复制一行换成自定义的)
编译内核 make uImage
更新uImage镜像
编译应用程序 arm-linux-gcc -o beep beep.c