1、添加环境变量
export PATH=KaTeX parse error: Expected 'EOF', got '#' at position 152: …raspbian-x64/ #?64位环境
export…PATH:/pi/bsp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:/pi/bsp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/ #32位环境,
重启后环境变量不在,可在~/.bashrc中添加该环境变量,则每次重启仍会存在
2、使环境变量生效
source /etc/profile
3、配置内核
(1)执行find ./ -name “bcmdefconfig*” 查找下对应的默认配置,只保留arm下的结果:
./arch/arm/configs/bcm2835_defconfig
./arch/arm/configs/bcmrpi_defconfig
./arch/arm/configs/bcm2709_defconfig
./arch/arm/configs/bcm_defconfig
Pi 1 使用bcmrpi_defconfig
Pi 2/3 使用bcm2709_defconfig
(2)cd /**/pi/linux/
KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
报错:执行a、sudo apt-get install libncurses5-dev libncursesw5-dev
b、sudo apt-get install bison -y
c、sudo apt-get install flex
执行完毕后在linux目录下会生成.config配置文件,覆盖之前原有的。也可直接从树莓派系统里copy出来。
可以修改.config文件,定制自己的内核
出现找不到gcc错误,则执行sudo -get install lib32ncurses5 lib32z1
出现arm-linux-gnueabihf-g++: error while loading shared libraries: libstdc++.so.6 no such file and,,则执行sudo apt-get install lib32z1 lib32ncurses5 // sudo apt-get install lib32stdc++6
(3)执行make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
顶部显示arm,说明参数设置成功
可通过这个图形界面进行配置
4、编译内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j3 zImage modules dtbs #如果是多处理系统可以添加选项-jn ,n为数字,表示多处理器的数量*1.5。可以加快编译速度
(1)出现fatal error: openssl/名单.h: No such file or directory。原因是libssl-dev~没有安装
libssl-dev包含libraries, header files and manpages,是openssl的一部分
使用sudo apt-get install libssl-dev来安装libssl-dev
(2)出现/bin/sh: 1: bc: not found
Kbuild:67: recipe fortarget ‘include/generated/timeconst.h’ failed
使用sudo apt-get install bc
5、编译完成后,在/arch/arm/boot目录下可以看到ZImage,就是编译生成的新内核。
但是树莓派需要另外一种格式的镜像,需要进行处理
执行cd tools/mkimage
./imagetool-uncompressed.py …/…/linux/arch/arm/boot/zImage
则可在tools/mkimage目录下:kernel.img,就是新生成的内核