Linux 官方
编译kernel
下载源码
国内下载地址
国内下载速度很快,Linux 有很多版本,这里选择5.10,不必追求最新版本。采用tar 指令解压1
tar xvf linux-5.10.92.tar.gz
工具链准备
主要涉及编译器及其它工具,这里版本gcc-arm-11.2-2022.02,不必最新。
国内镜像
国外地址
命名规则 arch-vendor-(os-)abi
arm-none-eabi: 编译arm 不依赖os程序,比如kernel,uboot
arm-none-linux-gnueabihf: 采用硬件浮点编译ARM 程序和linux应用程序。
arm-none-linux-gnueabi:采用软浮点编译ARM 程序和linux应用程序
用tar 指令将下载文件解压到 /opt/目录中,打开~/.bashrc,添加到环境变量中,保存后执行 source ~/.bashrc,使其生效1
export PATH=$PATH:/opt/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin
查看版本,说明工具准备完成
1
arm-none-eabi-gcc -v
内核编译
Linux 内核支持多种cpu,多种开发板,这里选择vexpress开发板作为讲解。生成文件放到out目录下。1
2
3
4export CROSS_COMPILE=arm-none-eabi-
export ARCH=arm
make O=out vexpress_defconfig -j4
make O=out -j4
编译失败解决
新环境可能存在编译不过的情况,一般不是源码问题,耐心解决环境问题。
- 需要的工具未安装,apt-get install 安装即可
- gcc 版本与Linux 内核版本不匹配
1
2
3
4
5
6
7sudo apt install make gcc flex bison
sudo apt install libncurses5-dev libpixman-1-dev
sudo apt install zlib1g-dev
sudo apt install libglib2.0-0
sudo apt install libglib2.0-dev
sudo apt install build-essential libgmp3-dev libmpc-dev bc
sudo apt install make gcc flex bison flex g++