【Hi3516A_SDK】单独编译kernel

成功安装 Hi3516A SDK 后,内核源代码已存放于 SDK 目录下的 osdrv/目录中,用户可直接进入目录进行相关操作。

单独编译内核源码步骤:
1.进入kernel目录,解压内核源码

cd Hi3516A_SDK_V1.0.5.0/osdrv/opensource/kernel
tar -zxvf linux-3.4.y.tgz

解压后进入linux-3.4.y目录
在这里插入图片描述
2.手动拷贝.config 文件

sudo cp arch/arm/configs/hi3516a_full_defconfig  .config

3.通过“make menuconfig”进行内核配置

make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig

输入命令后却出现如下错误:
在这里插入图片描述
打开scripts/basic/.fixdep.d文件失败(权限不允许),导致后面编译中断了

那么就加上权限后再次执行(或者切换到root用户来执行)

sudo make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig

在这里插入图片描述
提示缺乏ncurses依赖库,那么就把缺少的库安装上

sudo apt-get install libncurses5-dev

再次执行sudo make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
【Hi3516A_SDK】单独编译kernel_第1张图片
内核配置界面有了,可选择需要的模块,选择完毕后保存退出.

4.编译内核并生成内核镜像 uImage

sudo make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage

输入编译命令后,出现错误信息:找不到arm-hisiv300-linux-gcc
【Hi3516A_SDK】单独编译kernel_第2张图片
终端输入arm-hisiv300-linux-gcc -v查看版本信息
【Hi3516A_SDK】单独编译kernel_第3张图片
可以看到版本信息,说明已经安装好交叉编译工具链了的

至于为什么用sudo临时权限会找不到arm-hisiv300-linux-gcc呢,原因未知……而没有权限又编译不了,所以就用了下面的解决办法

解决办法:
切换到root用户,在root用户下添加工具链的路径,然后输入make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage进行编译

sudo su
export PATH=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:$PATH 
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage

【Hi3516A_SDK】单独编译kernel_第4张图片
可以编译了,但是又出现了另外的错误信息:找不到“ mkimage”命令-无法建立U-Boot引导映像

"mkimage" command not found - U-Boot images will not be built

解决办法:

sudo apt-get install u-boot-tools

再次输入make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage进行编译就ok了
【Hi3516A_SDK】单独编译kernel_第5张图片
进入arch/arm/boot目录,可以看到生成的内核镜像uImage
在这里插入图片描述

如果编译过程中出现错误,按顺序重新执行以下命令:

make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- clean
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage

注: 交叉编译工具也可以使用arm-hisiv400-linux- ,这是基于Hi3516A_SDK_V1.0.5.0这个发布包提供的两种编译工具链 arm-hisiv300-linux 和 arm-hisiv400-linux

你可能感兴趣的:(Hi3516A)