赛灵思xlnx4.14编译内核出错原因解析、交叉编译工具安装、赛灵思xlnx-uboot源码制作mkimage工具

cc1: some warnings being treated as errors
scripts/Makefile.build:320: recipe for target 'drivers/mtd/spi-nor/spi-nor.o' failed
make[3]: *** [drivers/mtd/spi-nor/spi-nor.o] Error 1
scripts/Makefile.build:573: recipe for target 'drivers/mtd/spi-nor' failed
make[2]: *** [drivers/mtd/spi-nor] Error 2
scripts/Makefile.build:573: recipe for target 'drivers/mtd' failed
make[1]: *** [drivers/mtd] Error 2
Makefile:1024: recipe for target 'drivers' failed
make: *** [drivers] Error 2

解决方法:

编译失败的原因主要是交叉编译工具的环境没有配置,根据手册,三条命令可以生成系统镜像,在交叉编译配置时,得先安装Xilinx Tools(也就是petalinux和vivado)或者是SDK,关于SDK安装可参考赛灵思 ZYNQ系列安装petalinux/SDK/VIVADO

一般来说,现在vivado已经包含SDK所以可以直接安装vivado即可

一、安装之后,设置工具环境:可先不走这一步

先安装64位系统下的32位环境(使32位程序在64位系统下可以执行程序)

bash$ sudo apt-get install ia32-libs

注意:如果说找不到这个安装包的话,那就安装其他可替代的包,在终端上会有提示,因为这个包可能有点老了,被新的包替代了。如果还不行,可以执行sudo apt-get install libglib2.0-0:i386,老的ia32包已经没有可真正替代的了,不过也不是一定需要他,因为现在操作系统或者我们之前搭建petalinux环境安装的32位包可能已经分散的包括了ia32包,因此可以先忽略这个包。


 更新下面的第二步骤:

交叉编译工具现在已经升级为arm-linux-gnueabihf-gcc

所以交叉编译工具的环境配置变为如下

bash$ export CROSS_COMPILE=arm-linux-gnueabihf-
bash$ source ~/Xilinx/SDK/2018.2/settings64.sh # 32位系统就用 settings32.sh

下面就可以直接到2.2节了。


 二、之后输入如下指令:配置环境变量,make编译时会用到这些环境变量

bash$ export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
bash$ source ~/Xilinx/SDK/2018.2/settings64.sh # 32位系统就用 settings32.sh

编译内核:
2.1 添加交叉编译工具即可
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
这个工具arm-xilinx-linux-gnueabi-gcc
是需要先安装的,软件包名字是xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin,百度云盘下载地址

配置环境变量:vim ~/.bashrc添加下面这一行

PATH=$PATH:~/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin

具体安装方法-参考这位博主!

!!PS:这个软件会区分是实体机还是虚拟机环境,如果是虚拟机环境,那么不会启动该软件的图形安装界面,会自动用命令行模式来安装,你只需要一直enter就行了,然后询问y/n时输入y即可,如果是实体机环境,那么会默认用图形界面来安装,跟windows安装软件一样了,只需要鼠标点点就行。

====================================
2.2 然后配置内核:

make ARCH=arm xilinx_zynq_defconfig
编译:make ARCH=arm -j4 生成zImage

三、要想生成uImage必须先得到uboot编译后的mkimage工具:

前提,先下载uboot程序下载xlnx-uboot,选一个你需要的版本,我选的是2018.2的,以此类推。

必须先安装petalinux工具,可参考petalinux安装,必须执行里面的修改.bashrc那条命令,不然找不到下面的工具

编译工具选择:export CROSS_COMPILE=arm-linux-gnueabihf-

配置zc706的配置文件,如果你是其他系列的板子,自己选择

make zynq_zc706_defconfig

 可供选择的其他配置文件如下

赛灵思xlnx4.14编译内核出错原因解析、交叉编译工具安装、赛灵思xlnx-uboot源码制作mkimage工具_第1张图片


如果还是选择上面的arm-xilinx-linux-gnueabi-gcc工具,那么会提示gcc版本低于6.0!!所以得修改为arm-linux-gnueabihf-gcc

编译uboot源程序,直接输入make即可,然后把mkimage的地址(在uboot源码的tools目录里)添加到PATH中:

gedit ~/.bashrc 添加下面这一行

PATH=$PATH:/u-boot-xlnx-xilinx-v2018.2/tools(注意path自己填自己的值,如果在主目录,就填~波浪号就行)


之后在内核目录下可以编译生成uImage:

export CROSS_COMPILE=arm-linux-gnueabihf-

make ARCH=arm xilinx_zynq_defconfig
make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage -j4

恭喜!成功了,生成的内核镜像在arch/arm/boot下:

PS:一共有3个镜像:

  1. Image:未压缩的内核镜像
  2. zImage:压缩的内核镜像,在运行时会自己解压缩自己
  3. uImage:使用U-boot头部(也就是用mkimage工具)封装zImage的uImage镜像
Image Name:   Linux-4.14.0-xilinx
Created:      Tue Sep 25 13:29:45 2018
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    4169744 Bytes = 4072.02 KiB = 3.98 MiB
Load Address: 00008000
Entry Point:  00008000
Kernel: arch/arm/boot/uImage is ready

 

你可能感兴趣的:(linux内核学习)