迅为IMX6Q开发板QtE5.7编译(上)
7.2 QtE5.7 编译
本小节主要包括以下内容:
1 在 Ubuntu16.04 系统下搭建编译环境;
2 在 Ubuntu16.04 系统下实现 uboot 和内核源码编译;
3 在 Ubuntu16.04 系统下实现 QtE5.7 的编译;
4 在 Ubuntu16.04 系统下实现 QtE5.7 镜像的打包编译。
迅为开发板可以支持 QtE5.7 系统,将 uboot 和内核在同一 Ubuntu 环境下编译,有
助于提高开发效率。请注意,在 Ubuntu16.04 下是无法编译 Android 系统的,必须要使用
Android 编译章节对应的 Ubuntu 系统。
7.2.1 QtE5.7 编译环境的两种搭建方式
7.2.1.1 使用已经搭建好的镜像
搭建好的编译环境在网盘“iTOP-iMX6 开发板资料汇总(不含光盘资料)\02_iTOP-
iMX6 开发板编译系统所需要的工具包等\06_QtE5.7 的编译环境安装包”目录下。用户如果使用搭建好的编译环境,在简单的修改环境变量之后,就可以完成本章的编译。
用户在使用搭建好的环境时,如果 ssh 连接失败的话,可以参考“7.2.1.2”小节,配置ssh 服务。如果参考参考“7.2.1.2”小节修改配置之后还有问题,可以参考 7.2.1.3 和 7.2.1.4小节,使用的替换工具。经过测试,在 ssh 工具无法使用的时候,这两个工具仍然可以使用。
7.2.1.2 自己搭建环境
另一种方法是自己安装虚拟机,安装 Ubuntu16.04 系统,搭建环境。
有关“虚拟机安装”、“虚拟机加载 ubuntu 镜像”、“Ubuntu 基本操作”等内容,用户可以参考第三章的内容,这些基本操作在 ubutu16 上都是通用的。有一点需要特殊提出的是,使用 ubuntu16 时,使用的站点是清华的源,具体的设置过程如下:
右上角小齿轮→System Settings→System→Software & updates
→Ubuntu Software→Download from 选择站点
→选择清华站点
→弹出验证→输入 root 账号密码
→替换为清华的下载点
→apt-get update 更新
使用命令“apt-get install vim ssh”安装 vim 编辑器以及 ssh 工具。
使用 ssh 的时候,会遇到 ssh 连接失败的问题。
先使用命令“/etc/init.d/ssh restart”启动 ssh 服务,然后使用命令“vim
/etc/ssh/sshd_config”打开配置文件。在配置文件最后位置添加:
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-
sha256@libssh.org
如下图所示:
在配置文件中找到下面这段代码,修改如下。
# Authentication:
LoginGraceTime 120
#PermitRootLogin prohibit-password
PermitRootLogin yes
StrictModes yes
之后使用“/etc/init.d/ssh restart”命令重启 ssh 服务,ssh 就可以连接上了。
依次使用如下命令,进行库文件的安装。
apt-get install lzop
apt-get install u-boot-tools
apt-get install autoconf
apt-get install automake
apt-get install libtool
apt-get install libstdc++6
apt-get install lib32c-dev
apt-get install lib32stdc++6
apt-get install lib32z1
apt-get install lib32ncurses5
7.2.1.3 putty 工具的使用
用户手册 3.3.5 小节介绍 SSH 工具,在 Ubuntu16.04 上有一定的概率使用不了,本节介绍替换 SSH 控制台的工具 putty。
putty 工具是网盘“iTOP-iMX6 开发板资料汇总(不含光盘资料)\02_iTOP-iMX6 开发板编译系统所需要的工具包等\06_QtE5.7 的编译环境安装包\03-QtE5.7 编译环境需要的工具\01-putty 控制台工具”目录下的压缩包“putty_cn.zip”,解压之后得到文件夹“puttyfile_0.62cn”,进入该文件夹,如下图所示。
确认 Ubuntu16.04 上已经安装了 SSH 并开启 SSH 功能,虚拟机已经开启。作者虚拟机上的 IP 是:192.168.2.23,用户要根据自身的实际情况修改。如下图所示,双“putty.exe”打开 Putty 配置,如下图所示。
如上图所示,需要注意的部分已经标注。
第一步“远程主机 IP”要根据实际情况设置;第 2-4 步骤,使用默认即可;第 5 步在保存登陆设置之后,如果配置没有变化,可以使用默认配置登陆;配置完成之后使用第 6 步,登陆主机。
作者配置如下图所示。
点击打开,弹出如下图所示对话框。
有三种选项目,第一个选项“是”,表示登陆主机并且保存配置到缓存;第二个选项“否”,表示登陆主机,但是不保存配置;第三个选项“取消”,表示不登录,不保存。选择第一个选项,第二次登陆就不会弹出这个下图所示的对话框。
这里选择“是”,只剩下 PuTTY 使用界面,如下图所示。输入账号 root 和密码
topeet,搭建好的 Ubuntu 系统默认密码是“topeet”。
输入账号和密码之后,如下图所示,已经可以远程控制 Ubuntu16.04 系统了。
7.2.1.4 winscp 工具的使用
用户手册 3.3.5 小节介绍 SSH 工具,在 Ubuntu16.04 上有一定的概率使用不了,本节介绍替换 SSH 文件传输的工具 winscp。
winscp 工具是网盘“iTOP-iMX6 开发板资料汇总(不含光盘资料)\02_iTOP-iMX6 开发板编译系统所需要的工具包等\06_QtE5.7 的编译环境安装包\03-QtE5.7 编译环境需要的工具\02-WinSCP 文件传输工具”目录下的压缩包“winscp5131.zip”,解压之后得到文件夹“WinSCP(SFTP 客户端) v5.13.1 中文版”,进入该文件夹,如下图所示。
双击“WinSCP.exe”,如下图所示。弹出登陆框。
如下图所示,主机名称为 Ubuntu 的 IP 地址,用户名直接登陆 root,搭建好的编译环境密码为 topeet,然后点击按钮“登陆”。
弹出如下图所示提示框。有三种选项目,第一个选项“是”,表示登陆主机并且保存配置到缓存;第二个选项“否”,表示登陆主机,但是不保存配置;第三个选项“取消”,表示不登录,不保存。选择第一个选项,第二次登陆就不会弹出这个下图所示的对话框。
作者这里选择“是”,如下图所示,已经登陆,左边是 Windows 目录,右边是 Ubuntu的目录,使用方法比较简单,传文件直接向对应目录拖动即可。
7.2.2 Ubuntu16.04 系统编译 uboot 和 kernel
通过 Ubuntu16.04 编译 uboot 和 kernel 镜像,和使用第五章编译出来的镜像是一摸一样的。由于 QtE5.7 必须在 Ubuntu16.04 上编译,为了方便只使用 QtE5.7 的用户,所以在这一小节中,提供在 Ubuntu16.04 上编译 QtE5.7 对应的 uboot 和 kernel 镜像的方法。
uboot 源码和内核源码均在 Android 源码中。
Android 源码在光盘目录“04_源码_Android4.4 文件系统”下,压缩包先在 windows下解压,解压之后的到单独的压缩包“iTOP-iMX6_android4.4.2_20160904.tar.gz”。将“iTOP-iMX6_android4.4.2_20160904.tar.gz”压缩包解压到 Ubuntu 下(注意,日期后缀可能会更新),得到“iTOP-iMX6_android4.4.2”文件夹,进入“iTOP-iMX6_android4.4.2”目录,如下图所示。
7.2.2.1 编译器版本
编译的时候需要用到交叉编译工具。具体设置过程,可以参考“5.2.2 交叉编译工具的安装”小节。
7.2.2.2 编译 uboot
进入源码解压得到的“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx”目录,如下图所示,可以看到脚本“build_uboot.sh”,执行脚本“build_uboot.sh”开始编译 uboot。如下图所示。
编译完成后,生成了“u-boot.bin”文件,就是 uboot 的镜像。iTOP-iMX6 开发板所有的系统通用一套 uboot 源码和镜像。如下图所示。
7.2.2.3 编译内核
进入源码解压得到“iTOP-iMX6_android4.4.2/kernel_imx”目录,使用“vikernel/timeconst.pl”命令打开该文件,进入到 373 行,并修改为如下图所示。
保存,退出。
使用“./build_qt_kernel.sh”命令,开始编译内核,如下图所示。
编译完成后,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目录下生成uImage,即是内核镜像。如下图所示。