一、首先安装toolchains
1. download Linaro toolchains
Linaro toolchains是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。当然,也可以选用gcc toolchains。
网址:
https://www.linaro.org/downloads/
下载: gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
2. install Linaro toolchains
2.1 解压
cd /
sudo mkdir tools
cd tools
sudo cp ~/samba-share/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz .
sudo tar xvJf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
2.2 设置环境变量
1) 打开~/.bashrc
sudo source ~/.bashrc
2) 在最后添加:
export PATH=$PATH:/tools/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin
3) 更新:
source ~/.bashrc
二、编译kernel
1. download kernel
根据需要下载相应版本的kernel,我们选择4.19,以下两个网址都可
https://www.kernel.org/
https://cdn.kernel.org/pub/linux/kernel/
2. configure kernel
2.1 产生内核配置文件 .config
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
注:
-
defconfig 一般在arch/arm64/configs/目录下
-
不能直接copy arch/arm64/configs/deconfig .config
-
也不能直接采用make ARCH=arm64 menuconfig来生成.config
没有此步骤直接编译kernel会提示:Configuration file ".config" not found!
2.2 配置kernel(可选)
make ARCH=arm64 menuconfig
3. build kernel
执行:make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8
3.1 提示如下错误
scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: No such file or directory
解决:
执行 sudo apt-get install libssl-dev
3.2 继续执行make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8
大约20分钟后,编译完成!
vmlinux在~/code/linux-4.19.84/
Image在~/code/linux-4.19.84/arch/arm64/boot/
4. other error
新安装的Ubuntu可能还会遇到以下错误,但都很好解决。
4.1 Command 'make' not found
解决:sudo apt install make
4.2 /bin/sh: 1: bison: not found
解决:sudo apt-get install bison -y
4.3 /bin/sh: 1: flex: not found
解决:sudo apt-get install flex
4.4 Unable to find the ncurses package.
解决:sudo apt-get install ncurses-dev