• 迅为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 开发板资料汇总(不含光盘资料)2_iTOP-
    iMX6 开发板编译系统所需要的工具包等6_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 开发板资料汇总(不含光盘资料)2_iTOP-iMX6 开发板编译系统所需要的工具包等6_QtE5.7 的编译环境安装包3-QtE5.7 编译环境需要的工具1-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 开发板资料汇总(不含光盘资料)2_iTOP-iMX6 开发板编译系统所需要的工具包等6_QtE5.7 的编译环境安装包3-QtE5.7 编译环境需要的工具2-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,即是内核镜像。如下图所示。

  • 相关阅读:
    关于将so 打包入APK的问题
    求 在独立service 中 调用contentprovider的方法
    ndk 环境下 c版 md5
    请教大牛们一个问题
    编写 service 与导出 jar 时注意的问题
    引入已编译好的动态库
    PHP 日期格式说明
    Ocaml 插件
    【转】简单至极的 PHP 缓存类
    PHP mysqlnd cannot connect to MySQL 4.1+ using old authentication
  • 原文地址:https://www.cnblogs.com/liyue3/p/14142932.html
Copyright © 2020-2023  润新知