搜索
bottom↓
回复: 24

[分享]在i.MX 6Solo上编译并运行QT5应用

[复制链接]

出0入0汤圆

发表于 2014-9-14 09:55:43 | 显示全部楼层 |阅读模式
在论坛里看到很多讨论i.MX6Q的问题,感觉大家没人关系它的小弟i.MX 6Solo,今天就把自己在i.MX 6Solo上编译QT5的经验分享出来以供有需要的坛友参考。
我用的开发版是RIoTBoard,除了i.MX 6Solo外,板子上还有1G DDR3内存和4G eMMC,外设方便支持千兆网卡、HDMI1.4、microSD、LVDS、JTAG等,更多资料可以看一下element14上的介绍:
http://www.element14.com/community/docs/DOC-65474
这个板子的eMMC里面自带了Android,不过我并没有用,我在microSD卡里面刷入了Debian,然后修改启动开关的位置从microSD启动,这样就可以运行其它系统了。官方也提供了对Ubuntu的功能,不过版本很就:11.04。
此次编译的程序是开源飞控TauLabs的地面站,用QT写的,其最新版本要求QT5,而Debian 7.5上的QT只有4.8,这里说一下如果你在软件源里面启用SID,是可以通过apt-get很方便地安装QT5的,但是要把它所依赖的其它库都升级到SID里面的版本,可能会导致与系统里面其它应用之间的兼容性问题,因此不建议这样做。所以我选择了从源码编译QT。
首先要下载QT的代码,我选择了一个比较近的镜像下载的:
  1. wget http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.3/5.3.1/single/qt-everywhere-opensource-src-5.3.1.tar.gz
复制代码

然后先别急的解压,先对照QT的文档检查一下是不是依赖包都安装了:
http://qt-project.org/doc/qt-5/linux-requirements.html
比如我的板子上缺乏XCB和XRender,可以用如下命令安装:
  1. sudo apt-get install libxcb-* libX11-xcb1 libX11-xcb-dev libxrender-dev libxrender1
复制代码

如果你的应用程序里面用到了OpenGL、多媒体支持或者WebKit,那么建议仔细检查一下它们各有的依赖项。
接下来就可以陪着并编译了:

  1. tar -xzvf qt-everywhere-opensource-src-5.3.1.tar.gz
  2. cd <source directory>
  3. ./configure <options>
复制代码

QT的configure脚本功能非常复杂,建议看一下这个文档,根据需要自己添加参数:
http://qt-project.org/doc/qt-5/configure-options.html
我这里没有对不需要的模块进行删减,只是指定了prefix就编译了,实践证明这需要非常长的编译时间。
configure脚本运行后会问一些问题:

  1. ./configure -prefix /opt/Qt-5.3.1
  2. + cd qtbase
  3. + ~/qt-src-5.3.1/qtbase/configure -top-level -prefix /opt/Qt-5.3.1
  4. Which edition of Qt do you want to use ?

  5. Type 'c' if you want to use the Commercial Edition.
  6. Type 'o' if you want to use the Open Source Edition.

  7. c “c选择开源版本,否则要求提供一个license文件”

  8. This is the Qt Technology Preview Edition.

  9. You are licensed to use this software under the terms of
  10. the TECHNOLOGY PREVIEW LICENSE AGREEMENT

  11. Type '?' to read the Preview License.
  12. Type 'yes' to accept this license offer.
  13. Type 'no' to decline this license offer.

  14. Do you accept the terms of the license? yes “输入yes同意许可协议”

  15. Creating qmake...
复制代码

除了检查基本的系统环境外,configure脚本还会编译qmake用于QT的编译,最后它会给出一个编译选项,类似这样:

  1. Build parts ............ libs tools examples
  2.   Mode ................... release
  3.   Using C++11 ............ yes
  4.   Using PCH .............. yes
  5.   Target compiler supports:
  6.     iWMMXt/Neon .......... no/auto

  7. Qt modules and options:
  8.   Qt D-Bus ............... no
  9.   Qt Concurrent .......... yes
  10.   Qt GUI ................. yes
  11.   Qt Widgets ............. yes
  12.   Large File ............. yes
  13.   QML debugging .......... yes
  14.   Use system proxies ..... no
复制代码

然后就可以开始编译了:
  1. make
复制代码

这会花很长很长很长很长很长很长很长很长很长的时间的,我由于中间遇到依赖库的头文件缺失的问题而终止编译无法统计具体时间,但这总共花了3个晚上外加一个白天才完成编译,尤其是在i.MX 6Solo这样的单核心CPU上,如果你用i.MX 6Q,那么可以用
  1. make -j4
复制代码
来4核火力全开以加速编译。
当然要是在PC上交叉编译的话速度会很快,我没选择交叉编译的原因是为了避免依赖库和一些交叉编译特有的缺陷(如浮点数处理等)。
等编译完成后,可以简单地把新编译好地QT安装到指定地位置:
  1. sudo make install
复制代码

然后修改环境变量
  1. export PATH=/opt/Qt-5.3.1/bin:$PATH
复制代码

现在就可以检查一下安装的结果了:

  1. $ qmake --version
  2. QMake version 3.0
  3. Using Qt version 5.3.1 in /opt/Qt-5.3.1/lib
复制代码

已经能看到是最新的QT 5.3.1 了,至此QT部分搞定!
然后为了更全面地测试一下,当然要编译一个应用程序试试,这里我用了开源飞控TauLabs的地面站,关于它可以看看这里(http://taulabs.org)。
还是下载源码,可以用git搞定:
  1. git clone https://github.com/TauLabs/TauLabs.git
复制代码

然后就可以开始编译了,几乎不要什么配置:

  1. cd TauLabs
  2. make gcs
复制代码

TauLabs地面站大概需要两个多小时地时间完成编译,相比QT还是算快的了
最后就是打开地面站,看看是不是有什么问题了,这里贴出几张截图(X11转发后在电脑上截的)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-14 10:11:08 | 显示全部楼层
哈!我司一直用的QT。不过现在转Andriod那一套开发环境啦

出0入0汤圆

 楼主| 发表于 2014-9-14 10:14:50 | 显示全部楼层
浪里白条 发表于 2014-9-14 10:11
哈!我司一直用的QT。不过现在转Andriod那一套开发环境啦

在Android上用QT?这个没试过

出100入101汤圆

发表于 2014-9-14 10:17:12 | 显示全部楼层
浪里白条 发表于 2014-9-14 10:11
哈!我司一直用的QT。不过现在转Andriod那一套开发环境啦

请教:用Andriod,就不用QT了?用的Andriod的哪个版本?JAVA开发的app?由QT转Andriod容易么?

出0入0汤圆

 楼主| 发表于 2014-9-14 10:18:45 | 显示全部楼层
fengyunyu 发表于 2014-9-14 10:17
请教:用Andriod,就不用QT了?用的Andriod的哪个版本?JAVA开发的app?由QT转Andriod容易么? ...

Andriod上可以用的,官方都提供下载了呢,不过真没试过

出0入0汤圆

发表于 2014-9-14 10:21:37 | 显示全部楼层
fengyunyu 发表于 2014-9-14 10:17
请教:用Andriod,就不用QT了?用的Andriod的哪个版本?JAVA开发的app?由QT转Andriod容易么? ...

QT可以开发Android的应用的,目前我司有一个项目就是用的QT开发的Android的应用。

出0入0汤圆

发表于 2014-9-14 10:23:14 | 显示全部楼层
dawanpi 发表于 2014-9-14 10:14
在Android上用QT?这个没试过

据我的同事说,QT开发 Android的应用不是特别好,没有AndriodSDK的那一套开发工具好。

出0入0汤圆

发表于 2014-9-14 10:37:56 | 显示全部楼层
浪里白条 发表于 2014-9-14 10:23
据我的同事说,QT开发 Android的应用不是特别好,没有AndriodSDK的那一套开发工具好。 ...

Qt for android怎么可能干过android原生的开发工具。一个亲儿子一个干儿子能一样么

出0入0汤圆

发表于 2014-9-14 10:46:58 | 显示全部楼层
这个不错。我也有一块RioTboard开发板,感觉这块板的社区支持不怎么好。很多东西都需要自己搞。

出0入0汤圆

发表于 2014-9-14 10:52:25 | 显示全部楼层
楼主能上个视频看看qt的速度如何么,看看qml运行的速度怎样

出0入0汤圆

发表于 2014-9-14 11:47:33 | 显示全部楼层
关注一下上。

出0入0汤圆

 楼主| 发表于 2014-9-14 12:08:26 | 显示全部楼层
taboo 发表于 2014-9-14 10:52
楼主能上个视频看看qt的速度如何么,看看qml运行的速度怎样

你可以下载一个TauLabs的PC版地面站,在那个板子上跑除了加载速度慢以外和一般电脑没什么差别,另外它可以运行一个完整的GNOME,不过firefox只能打开2个以内的标签页,多了会卡。qml没试过。

出0入0汤圆

发表于 2014-9-14 12:10:05 | 显示全部楼层
楼主试过ubuntu没?玩这个是大势所趋哦,和pc一致

出0入0汤圆

 楼主| 发表于 2014-9-14 12:10:08 | 显示全部楼层
bruce_helen 发表于 2014-9-14 10:46
这个不错。我也有一块RioTboard开发板,感觉这块板的社区支持不怎么好。很多东西都需要自己搞。 ...

这个板子出来时间也不长啊,估计时间久了就好一点。不过element14把它作为android开发平台推广的,所以用的人会比树莓派或者BBB少。

出0入0汤圆

 楼主| 发表于 2014-9-14 12:10:42 | 显示全部楼层
bbstr 发表于 2014-9-14 12:10
楼主试过ubuntu没?玩这个是大势所趋哦,和pc一致

PC上用过Ubuntu,后来换的Debian,前者不稳定

出0入0汤圆

发表于 2014-9-14 12:16:34 | 显示全部楼层
ccrt 发表于 2014-9-14 10:37
Qt for android怎么可能干过android原生的开发工具。一个亲儿子一个干儿子能一样么
...

是啊,现在QT的用户还是原来QT For Linux的老用户

出0入0汤圆

发表于 2014-9-14 12:56:14 | 显示全部楼层
不知道qt现在怎么样了,android有取代之势

出0入0汤圆

发表于 2014-9-14 12:57:31 | 显示全部楼层
riyue 发表于 2014-9-14 12:56
不知道qt现在怎么样了,android有取代之势

现在基本上还是LINUX+QT用得比较多。

出0入0汤圆

发表于 2014-9-15 14:50:55 | 显示全部楼层
楼主,Debian的镜像文件哪里有?我也想搞个玩玩

出0入0汤圆

发表于 2014-9-15 14:57:24 | 显示全部楼层
真能忍,用2440编译过firefox还是什么软件,一晚上都没完,果断放弃。

出0入0汤圆

 楼主| 发表于 2014-9-15 14:59:18 | 显示全部楼层
bruce_helen 发表于 2014-9-15 14:50
楼主,Debian的镜像文件哪里有?我也想搞个玩玩

Element14的社区有讨论怎么编译的:
http://www.element14.com/communi ... board-for-riotboard
基本上就是先安装官方的那个旧的Linux,然后在上面编译新的Linux,内核 rootfs什么的。

出0入0汤圆

发表于 2016-4-18 20:39:03 | 显示全部楼层
我跟你很像啊

出0入0汤圆

发表于 2016-4-18 20:39:17 | 显示全部楼层
我也是用的imx6solo来开发应用

出0入0汤圆

发表于 2016-4-18 20:39:41 | 显示全部楼层
并且开发板用的也是英蓓特的RIoTBoard

出0入0汤圆

发表于 2016-9-21 21:16:21 | 显示全部楼层
顶LZ,14年摸过几天solo
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 15:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表