重温编译内核步骤:
命令如下:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16
第一行命令用于清除工程中之前编译的残留文件,最好这样做,否则有惊喜。
第二行命令用于指定配置文件使用imx_v7_defconfig,这是EVK板子自带的东西。
正点原子教材对其介绍如下:
和 uboot一样,在编译 Linux内核之前要先配置 Linux内核。每个板子都有其对应的默认
配置文件,这些默认配置文件保存在 arch/arm/configs目录中。 imx_v7_defconfig和
imx_v7_mfg_defconfig都可作为 I.MX6ULL EVK开发板所使用的默认配置文件。但是这里建议
使用 imx_v7_mfg_defconfig这个默认配置文件,因为其支持 mfgtools 下载到板子中。
当使用自己的配置文件的时候,可以在 arch/arm/configs目录 中创建。(另外后面配置设备树经常用到的 dts 文件也在 arch/arm 目录下,这个目录和程序员打交道打得很多)
在正点原子教程中,自己创建的配置文件名为 imx_alientek_emmc_defconfig
因此在上面的第二条命令,应该改为
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_alientek_emmc_defconfig
第三行用于编译内核文件,时间比较长,尤其在虚拟机里做,你可以先吃杯泡面,回来就好了。
之后就编译出了Linux的内核文件,在arch/arm/boot中,如果存在zImage和imx6ull-14x14-evk.dtb两个文件表示成功,否则肯定是出问题了。我分析问题可能出现以下几种:
没有安装交叉编译环境,但如果你做了U-Boot移植,问题应该不在这;
没有安装lzop,直接apt-get安装一下即可;
配置文件名称写错了,imx_v7_defconfig;
CROSS_COMPILE=arm-linux-gnueabihf- 后面没加空格,这个错误很低级。