build linux kernel
?
一、首先安裝toolchains
1.?download Linaro?toolchains
Linaro?toolchains是由?Linaro?公司基于GCC推出的的ARM交叉編譯工具。可用于交叉編譯ARM系統中所有環節的代碼,包括裸機程序、u-boot、Linux kernel、filesystem和App應用程序。當然,也可以選用gcc?toolchains。
網址:
https://www.linaro.org/downloads/
https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/
下載: 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
?
?
?
?
?
總結
以上是生活随笔為你收集整理的build linux kernel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于busybox构建rootfs
- 下一篇: 80后游戏机游戏名字大全集有哪些