Linux 官方

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
    4
    export 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
    7
    sudo 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++