本文就来介绍下如何将Qt5.9.5移植到ARM开发板上。

以imx6开发板为例,使用Ubuntu14.04虚拟机作为移植环境。

准备工作

1、主机环境:Ubuntu14.04;

开发板:启扬IAC-IMX6-kit;

(如果使用的是Ubuntu12.04,需要将gcc升级到4.8以上)

2、官网下载源码包

下载qt-everywhere-opensource-src-5.9.5.tar.xz,这里选择下载的是xz格式的源码包,而不是将源码和qtcreator打包好的run文件。因为试过run文件,一方面文件太大,另一方面安装得到的源码包和xz格式的有一些不同,比如找不到qt base,影响到后续的配置,所以最好选择xz格式。

3、解压

tar -zxvf qt-everywhere-opensource-src-5.9.5.tar.xz

4、配置交叉编译器的路径

因为Qt5.9.5支持C++11,所以编译器版本需要高于4.8以上,我采用了4.8.3版本编译器。

修改~/.bashrc 文件,在系统环境变量PATH中添加交叉编译器的路径。(路径以实际路径为准)

export PATH=/home/ubuntu1404/work/arm-2014.05/bin:$PATH

执行命令source ~/.bashrc

查看交叉编译器的路径是否已经添加到系统环境变量PATH中。 
可以查看交叉编译器的版本号:

arm-none-linux-gnueabi-gcc-v

如果能够正常显示出交叉编译器的版本号,恭喜你,第一步已经成功了!

Qt5.9.5的交叉编译

1、指定目标平台的架构和交叉编译器的类型

Qt5中针对不同的目标平台都有相应的配置文件夹,只需修改对应目标平台文件夹中的配置文件qmake.conf。

cd qt-everywhere-opensource-src-5.9.5

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

下面是修改后的qmake.conf,其中的内容需要根据自己的实际情况去修改。

这里修改了两个地方,一是定义了arm的架构,其中:QT_QPA_PLATFORM是指定QPA平台的插件,这里选择的是linuxfb,参数-O是编译器提供的优化选项,如-O、-O1、-O2、-O3等,代表不同的优化级别,参数-march后面指定的是目标处理器的架构(可能指定不同的架构会调用不同的指令集,猜的~);另外一个改动的地方就是将下面g++.conf和linux.conf中的参数值中加上了fsl,如arm-none-linux-gnueabi-gcc,这是我选择的交叉编译器,可以根据自身的情况修改。

2、根据需求配置Qt

配置Qt可以通过源码包中configure脚本来完成,运行configure脚本后会得到makefile文件,然后通过make和make install命令完成编译和安装。这里我编写了一个脚本来实现配置的步骤。

从shell脚本中可以看到,参数-prefix指定了文件的安装路径,我的安装路径是/opt/newQt5.9.5_arm/newQt5.9.5_arm_install,参数-xplatform指定了目标平台为linux-arm-gnueabi-g++。执行这个脚本后就会得到makefile文件,下一步就可以进行编译了。

3. 编译和安装

终于可以编译了,执行make&&make install命令,然后开始漫长的编译过程,整个过程持续大概2个小时。

移植所需的文件到ARM中

将编译安装得到的lib、plugins拷贝到开发板中,lib中存放的是QT程序运行所需的动态库文件,plugins中存放的应该是所需的插件。由于U盘挂载比较麻烦,这里选择使用scp命令,通过网络传输。

配置开发板环境并运行程序

修改/etc/QtEnv文件,设置开发板的环境变量,文件末尾添加的内容如下:

export LD_LIBRARY_PATH=/opt/Qt5.9.5_arm_install/lib

export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt5.9.5_arm_install/plugins

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

export QT_QPA_FONTDIR=/opt/Qt5.9.5_arm_install/lib/fonts

4. 编译输入法程序

将QtSoftKeyboard2018-03-03.zip拷贝到目录下解压

添加qmake到环境变量

export QTEDIR=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install:$QTEDIR

export PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/bin:$PATH

export LD_LIBRARY_PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/lib: LD_LIBRARY_PATH

生成Makefile和编译

#qmake

#make

报错

修改PinYinFenCi.cpp文件的42行、88行、117行将toAscii()函数修改为toLatin1()

将/bin/目录下的InputTool和/db/目录下的pinyin.db拷贝到开发板同一个目录下

运行InputTool

报错

将/home/ubuntu1404/work/arm-2014.05/arm-none-linux-gnueabi/libc/lib/下的所有文件拷贝

到开发板的/lib/目录下

Qt界面不显示中文

将FZYTK.TTF文件拷贝到/opt/Qt5.9.5_arm_install/lib/fonts下没有fonts需创建

警告

解决方法

移植libiconv-1.14

./configure -prefix=$PWD/install -host=arm-none-linux-gnueabi

Make &&make install

将安装目录下lib目录下的preloadable_libiconv.so拷贝到开发板/system/lib目录下

添加环境变量export LD_PRELOAD=/system/lib/preloadable_libiconv.so

至此,Qt移植就已经大功告成了!

你以为我们提供教程就这些?当然不是了,Qt Creator的安装配置运行过程继续了解下!

一、安装Qt creator

安装步骤

注意点:截图中的红色方框内容表示必须点击或者填写。

将qt-creator-opensource-linux-x86_64-4.3.1.run拷贝到Ubuntu中,运行qt-creator-opensource-linux-x86_64-4.3.1.run。

出现以下界面,点击Next:

出现以下界面,点击skip:

出现以下界面,点击Next:

出现以下界面,选择安装路径,以下是我的安装路径,然后点击Next:

出现以下界面,点击Next:

出现以下界面,点击接受协议,然后点击Next:

出现以下界面,点击install:

出现以下界面,等待1分钟左右:

出现以下界面,点击finish:

出现以下界面,表示安装成功:

备注:Qt Creator可运行文件在: <安装目录>/bin/qtcreator

二、配置Qt Creator

配置步骤

点击Tools->Options:

点击Build & Run 然后点击Compilers:

点击Add->GCC->C:

Compiler path 填写:

/home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-gcc

然后点击Apply:

点击Add->GCC->C++:

Compiler path 填写:

/home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-g++

然后点击Apply:

点击Qt Versions ,然后点击Add:

选择如下图路径的qmake,然后点击Apply:

点击Debuggers,然后点击Add:

Name填写:qt5.9.5-imx6

Path 填写:

/home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-gdb

然后点击Apply

点击Kits,然后点击Add:

Name填写:qt5.9.5-imx6

Sysroot填写:/home/ubuntu1404/work/arm-2014.05/bin

Compiler C 选择GCC

Compiler C++ 选择GCC

Debuggers 选择qt5.9.5-imx6

Qt version 选择Qt 5.9.5(qt5)

最后点击OK。

配置好后,关闭Qt creator。

三、 运行Qt creator

在终端运行:<安装目录>/bin/qtcreator.sh

四、搭建Qt工程

点击New Project

点击Application,然后点击Qt Widgets Application,然后点击Choose:

Name 填写: qt-test

Create ir 填写:/home/ubuntu1404 (备注:我的路径)

选择qt5.9.5-imx6,然后点击Next:

出现以下界面,点击Next:

出现以下界面,点击Finish:

出现以下界面,点击Forms,然后双击mainwindow.ui:

将左边的Push Buttor 拖拽到右边的窗口布局上:

右击窗口布局的PushButton,选择Go to slot :

出现以下界面,点击clicked(),然后点击OK :

在下图的mainwindow.cpp中添加头文件:注意头文件换成英文双引号

#include <QMessageBox>

#include <qdebug.h>

在void MainWindow::on_pushButton_clicked() 函数中添加:

QMessageBox message(QMessageBox::Warning,"Information","Really to clear data?",QMessageBox::Yes|QMessageBox::No,NULL);

if (message.exec()==QMessageBox::Yes)

{

qDebug()<<"clicked yes\n";

}

else

{

qDebug()<<"clicked no\n";

}

点击File,然后点击Save All:

点击左下角的Run 绿色三角形按钮,等待十秒左右后,右下角出现绿色横条,表示IMX6 可执行的Qt程序成功生成。

然后就可以尝试运行准备好的Qt程序了,Qt5中是不用加-qws参数的

Tips:Qt5中不再用到Qt4中的窗口系统qws++,而是使用QPA系统,二者之间的差异还不清楚,但是程序运行时不需要再加上参数-qws了。而这个特性也导致Qt5与Qt4的移植过程有一些区别,这里记录一下。

了解Qt5.9

赫尔辛基,2017年6月5日——Qt公司发布了其跨平台软件开发框架Qt的最新版本Qt 5.9。该开发框架能够帮助企业为自己的产品带来高超的用户体验,满足用户的需求。Qt5.9 得益于C++ 11的强大,带来了前所未有的性能及稳定性,并且为您提供长期支持(LTS)。目前,全球数百万的开发者都在使用Qt技术,包括财富五百强企业前十名中的八位。

根据Gartner最近发布的预测,2017年全球使用物联网的设备达到84亿件,比2016年增长31%,并且在2020年有望达到204亿件。物联网已经成为了全球技术发展方向中市场机会最广阔的领域。因此,企业及独立开发者们急切盼望能够通过方便快捷地创建应用及设备,满足当前及未来物联网行业的需求。在Qt 5.9的支持下,企业及独立开发者们能够获得这一跨平台开发框架的强力支持,为任何操作系统和设备开发提供功能强大且灵活的软件。

  Qt公司CTO Lars Knoll表示:“在今天这个万物互联、移动为先的社会里,客户的期望值呈指数级增长,几年前的企业完全无法预测今天的需求。因此,开发者们创造的应用及设备必须满足甚至超越客户的期望,以获得高超的用户体验。为满足这一需求,开发者们使用的开发框架也必须足够先进、灵活。Qt 5.9给开发者们提供了他们所需的性能及稳定性,帮助他们在今天高度竞争、应用驱动的经济环境中脱颖而出。”

  正如Qt的全部应用开发及设备开发工具一样,Qt 5.9所包含的新功能与高性能均以加速软件及设备开发为目的,涵盖大量行业,包括医疗健康、汽车制造、飞机制造、制造业、家电以及娱乐产品等。

超详细Qt5.9.5移植攻略的更多相关文章

  1. 【TencentOS tiny】 超详细的TencentOS tiny移植到STM32F103全教程

    移植前的准备工作 1. 获取STM32的裸机工程模板 STM32的裸机工程模板直接使用野火STM32开发板配套的固件库例程即可.可以从我github上获取https://github.com/jiej ...

  2. GitHub超详细图文攻略

    GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git 分类: 转载2014-03-25 21:10 10641人阅读 评论(2) 收藏 举报 GitHubbr ...

  3. 来开源吧!发布开源组件到 MavenCentral 仓库超详细攻略

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  4. TI Davinci DM6446开发攻略——根文件系统的裁剪和移植

    一.补充文件系统知识 Linux根文件系统是存放tool软件.lib文件.script(脚本).配置文件.其他特殊文件.自己开发的应用程序的地方.嵌入式linux的根文件系统rootfs就像windo ...

  5. Davinci DM6446开发攻略——linux-2.6.18移植

     TI DAVINCI 使用最新的内核是montavista linux-2.6.18,之前说过,国内很多公司,包括开发板的软件包,一直在使用montavista linux-2.6.10,这个版本准 ...

  6. 怎样注册uber司机 如何注册uber司机 最新详细攻略

    怎样注册uber司机 如何注册加入uber司机 全国加入Uber 的要求 车辆要求:要求裸车价8万以上,车龄5年以内,第三者责任险保额30万以上,不支持20万以下的面包车/商务车,不支持4座以下车辆. ...

  7. DM6446开发攻略——u-boot-1.3.4移植(1)

    http://zjbintsystem.blog.51cto.com/964211/282387转载   UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2 ...

  8. Davinci DM6446开发攻略——u-boot-1.3.4移植(1)

    UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2,而TI最新的EVM开发包里的UBOOT是1.2.0版本,国内很多公司还一直使用u-boot-1.1.4和 ...

  9. Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

      很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-bo ...

随机推荐

  1. Hive调优笔记

    Hive调优 先记录了这么多,日后如果有遇到,再补充. fetch模式 <property> <name>hive.fetch.task.conversion</name ...

  2. Flutter——TextField组件(文本框组件)

    TextField组件的常用属性: 属性 描述 maxLines 设置此参数可以把文本框改为多行文本框 onChanged 文本框改变的时候触发的事件 decoration hintText 类似 h ...

  3. 运维开发笔记整理-QueryDict对象

    运维开发笔记整理-QueryDict对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 客户端发送数据请求有很多种,相信运维人员已经很清楚了,如果不太清楚的话可以参考我之前的学习笔 ...

  4. Luogu P3243 菜肴制作

    Luogu P3243 菜肴制作 神神奇奇的拓扑排序,也就是借这道题学习一下大名鼎鼎的Toposort了-- #include<bits/stdc++.h> #define N 10001 ...

  5. 从Retrofit的源码来看 HTTP

    关于Retrofit是啥,这里就不多解释了,还是先来瞅下官网: 而这次主要是了解它的底层动作机制,而在了解底层之前先来回顾一下官网的整体使用步骤: 咱们也以官网的这个例子为例,先从简单的使用开始逐步深 ...

  6. 【loj-1055-Going Together-三个棋子推箱子走到目的地--讲预判的bfs】

    light oj 1055-Going Together 题目大致意思: 简单的三个棋子,每次可以下达一个命令,robots全部按照指令进行前进:若下一步不为空地则停留在原地. 特殊考虑: 1.例如A ...

  7. Idea中用来遍历list集合的快捷键

    使用Intellij idea时,想要快捷生成for循环代码块: itar 生成array for代码块 for (int i = 0; i < array.length; i++) { = a ...

  8. 优雅的处理vue注册全局组件

    使用情景: 有频繁使用的组件 需要进行全局注册 可以将这些组件都放在components下同一个文件夹下,在此文件夹中建立 一个js文件 代码如下: import Vue from 'vue'; // ...

  9. Git----常见工作管理总结

    1.工作流程模式: 首先,可以试图用git push origin branch-name推送自己的修改 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并 如果合并有冲突, ...

  10. xcode 查看stastic

    点GPU 双击柱状图 从上面list里点performance