在编译工作进行之前,先确保你的虚拟系统网络是可以用的,
下面先介绍一下apt-get
- 添加 apt-get update 国内源
sudo vim /etc/apt/sources.list
添加阿里服务器
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
添加163服务器
deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
-
准备交叉编译工具,这个工具一般芯片厂商会提供,或者从网上自己下载。
工具参照官方文档,放在默认的/opt 路径下,然后解压。 -
解压后设置编译器的环境变量。
$ PATH=$PATH:/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi
- 验证一下编译工具是否能够使用了,正常的话会打印一长串,出问题会提示错误信息。
$ arm-poky-linux-gnueabi-gcc -v
- 配置必要的环境
sudo apt-get install lib32z1 lib32ncurses5
sudo apt-get install gcc-multilib g++-multilib
- 准备linux源码,网上下载或找供应商。
$ tar -zxvf linux-4.1.15.tar.bz2
- 进入到解压后的linux目录,执行
make ARCH=arm imx_v7_defconfig
当然也可以根据需求,自己配置编译选项。
make menuconfig
如果已星号的方式选择,执行下面语句的时候会一起编译进zImage,如果选择太多不常用的模块,这样就增大的zImage的容量。有些模块可以选择“M”的方式(make module),他们就需要独立编译,需要的时候再安装模块。
make -j4 zImage
- 提示出错
piggy.lzo ,错误点在这里,这个提示说明piggy是lzo压缩格式。
lzop is a file compressor which is very similar to gzip. lzop uses the LZO data compression library for compression services.
下载安装解压工具
sudo apt-get install lzop
再次执行make -j4 zImage
这次编译速度就快多了,因为刚才很多编译工作都已经完成。
编译后会提示
Kernel: arch/arm/boot/zImage is ready
表明zImage的路径在linux内核的arch/arm/boot
路径下
- 编译设备树dtb
make imx6q-sabresd.dtb
或者
make imx6dl-sabresd.dtb
生产的文件存放路径
arch/arm/boot/dts/
如果此步提示错误,可能是arch/arm/boot/dts 路径下的Makefile里没有定义imx6q-sabresd.dtb,添加此定义即可。