成功安装 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
sudo apt-get install libncurses5-dev
再次执行sudo make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
内核配置界面有了,可选择需要的模块,选择完毕后保存退出.
4.编译内核并生成内核镜像 uImage
sudo make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage
输入编译命令后,出现错误信息:找不到arm-hisiv300-linux-gcc
终端输入arm-hisiv300-linux-gcc -v
查看版本信息
可以看到版本信息,说明已经安装好交叉编译工具链了的
至于为什么用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
可以编译了,但是又出现了另外的错误信息:找不到“ 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了
进入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