超详细Qt5.9.5移植攻略

导读:目前启扬智能默认提供的Qt版本是4.8,但是现在已经发展到最新的5.9版本。当现有版本的Qt库不能满足实际开发需求时,则需要进行Qt移植。这个帖子就来介绍下如何将Qt5.9.5移植到arm开发板上。

超详细Qt5.9.5移植攻略

以启扬i.MX6开发板为例,使用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/目录下的pinyiin.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的安装配置运行详细过程!

1.安装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

2.配置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。
3.运行Qt Creator
在终端运行:<安装目录>/bin/qtcreator.sh

4.搭建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
";
    }
    else
    {
       qDebug()<<"clicked no
";
}

点击File,然后点击Save All:

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

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

浙江启扬智能科技有限公司 成立于2007 年, 是一家专注于 ARM 嵌入式产品研发、生产与销售的高新技术企业,为用户提供基于ARM平台的工控板、核心板、开发板、主板、定制化产品OEM/ODM以及应用于工控、物联网、新零售、医疗、电力、环境监测、充电桩等领域的产品软硬件解决方案。0571-87858811-804

(0)

相关推荐

  • ubuntu下对Qt工程进行deb打包发布

    前言 最近研究ubuntu上的Qt打包遇到了很多问题,虽然有个LinuxDeployQt,但是这货有个很大的缺点,那就是它打包的程序在运行的时候会把自己释放到一个临时目录运行,这样就导致了我们的程序设 ...

  • 利用vs2019编译器远程调试linux程序(走心版)

    前段时间,参与了公司一个项目,需要开发linux服务程序,因为之前没接触过,对shell.GDB.makefile不熟悉,项目要的又紧,所以决定使用更为熟悉的vs编译器来远程调试linux程序,等有时 ...

  • 超详细拉萨老城一日游全攻略,带你玩遍“老拉萨”(附线路图)

    作为自驾川藏线的中转站,关于拉萨一城的攻略却是极少.这样的城市不应是粗略在八廓街.布达拉宫.大小昭寺打个卡,便匆匆告别. 这篇攻略,将给你规划一条非常成熟的路线,按照地图,你可以走遍拉萨旧城区. 线路 ...

  • 人手必备!超详细的临港购房攻略

    目前有不少粉丝在后台留言: 知了哥,临港是不是买不到房?怎么买? 有这种焦虑的朋友是基于目前整个临港可售房源的稀缺,还有之前湖滨天地"日光"的现象所致. 据了解,湖滨天地当时共推出 ...

  • 超详细的实验室基础知识攻略

    一.化学试剂1.1 化学试剂的分类化学试剂数量繁多,种类复杂,通常根据用途分为一般试剂.基础试剂.高纯试剂.色谱试剂.生化试剂.光谱纯试剂和指示剂等.按照试剂中所含杂质进行分级1.1.1 一般试剂:优 ...

  • 干货来了!超级详细的绣球养护全攻略!

    干货来了!超级详细的绣球养护全攻略!

  • 小白必看!2021超全洗碗机速选攻略!教你如何选到心仪的它

    很多情侣经常会讨论到婚后家务分配的问题,其他的都好说,但唯独对谁洗碗久争不下,觉得洗完油腻腻的,又脏又恶心.而且一旦没协商好出现争论,女孩子就会觉得:还没结婚呢,就这样对我,等结了婚,还不什么脏活累活 ...

  • 上海旅行攻略|小众超美紫藤花瀑布赏花攻略

    目前正是上海紫藤花盛开之时,只是大多紫藤花盛开之处人流涌动,且花处于较高位置,对于爱臭美拍照片的小伙伴们来说,是不是想要一个人少小众又适合拍照的地方捏? 今天为大家介绍的就是位于上海某处停车场的一块紫 ...

  • 超有料的油菜花拍照攻略来啦!

    朋友们,你们吼啊!我是橙子,一个集智慧与长发于一身的小助理. 最近油菜花开得hin不错,大家都想着想要拍美美的油菜花照片,不少粉丝也留言说想看油菜花拍照攻略,这不就来了! 当你和你男朋友快乐地去拍油菜 ...

  • 宜昌亲子游景区排名前五的有哪些?详细版宜昌亲子游玩攻略

    这些年带着家里的小朋友游山玩水去了不少城市,要说影响比较深刻的目的地的话,宜昌要算一个,接下来把我们从长沙出发,带上亲子去宜昌旅游的行程以及游玩美食酒店住宿的攻略写下来,希望能够帮助更多去宜昌亲子游玩 ...

  • 超全北欧五国旅游攻略,出行前必看

    近年来,"高冷"的北欧人气不断高涨,这个遥远又神秘的地方吸引了越来越多的旅行者前往.出发北欧旅游前需要准备什么,要知道哪些信息,北欧旅游的最佳时间.费用等等,这篇攻略囊括了北欧旅游 ...