dawanpi 发表于 2014-9-14 09:55:43

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

在论坛里看到很多讨论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的代码,我选择了一个比较近的镜像下载的:
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,可以用如下命令安装:
sudo apt-get install libxcb-* libX11-xcb1 libX11-xcb-dev libxrender-dev libxrender1
如果你的应用程序里面用到了OpenGL、多媒体支持或者WebKit,那么建议仔细检查一下它们各有的依赖项。
接下来就可以陪着并编译了:

tar -xzvf qt-everywhere-opensource-src-5.3.1.tar.gz
cd <source directory>
./configure <options>

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

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

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

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

This is the Qt Technology Preview Edition.

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

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

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

Creating qmake...

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

Build parts ............ libs tools examples
Mode ................... release
Using C++11 ............ yes
Using PCH .............. yes
Target compiler supports:
    iWMMXt/Neon .......... no/auto

Qt modules and options:
Qt D-Bus ............... no
Qt Concurrent .......... yes
Qt GUI ................. yes
Qt Widgets ............. yes
Large File ............. yes
QML debugging .......... yes
Use system proxies ..... no

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

$ qmake --version
QMake version 3.0
Using Qt version 5.3.1 in /opt/Qt-5.3.1/lib

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

cd TauLabs
make gcs

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



浪里白条 发表于 2014-9-14 10:11:08

哈!我司一直用的QT。不过现在转Andriod那一套开发环境啦

dawanpi 发表于 2014-9-14 10:14:50

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

在Android上用QT?这个没试过

fengyunyu 发表于 2014-9-14 10:17:12

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

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

dawanpi 发表于 2014-9-14 10:18:45

fengyunyu 发表于 2014-9-14 10:17
请教:用Andriod,就不用QT了?用的Andriod的哪个版本?JAVA开发的app?由QT转Andriod容易么? ...

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

浪里白条 发表于 2014-9-14 10:21:37

fengyunyu 发表于 2014-9-14 10:17
请教:用Andriod,就不用QT了?用的Andriod的哪个版本?JAVA开发的app?由QT转Andriod容易么? ...

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

浪里白条 发表于 2014-9-14 10:23:14

dawanpi 发表于 2014-9-14 10:14
在Android上用QT?这个没试过

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

ccrt 发表于 2014-9-14 10:37:56

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

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

bruce_helen 发表于 2014-9-14 10:46:58

这个不错。我也有一块RioTboard开发板,感觉这块板的社区支持不怎么好。很多东西都需要自己搞。

taboo 发表于 2014-9-14 10:52:25

楼主能上个视频看看qt的速度如何么,看看qml运行的速度怎样

GunGun 发表于 2014-9-14 11:47:33

关注一下上。

dawanpi 发表于 2014-9-14 12:08:26

taboo 发表于 2014-9-14 10:52
楼主能上个视频看看qt的速度如何么,看看qml运行的速度怎样

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

bbstr 发表于 2014-9-14 12:10:05

楼主试过ubuntu没?玩这个是大势所趋哦,和pc一致

dawanpi 发表于 2014-9-14 12:10:08

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

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

dawanpi 发表于 2014-9-14 12:10:42

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

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

浪里白条 发表于 2014-9-14 12:16:34

ccrt 发表于 2014-9-14 10:37
Qt for android怎么可能干过android原生的开发工具。一个亲儿子一个干儿子能一样么
...

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

riyue 发表于 2014-9-14 12:56:14

不知道qt现在怎么样了,android有取代之势

浪里白条 发表于 2014-9-14 12:57:31

riyue 发表于 2014-9-14 12:56
不知道qt现在怎么样了,android有取代之势

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

bruce_helen 发表于 2014-9-15 14:50:55

楼主,Debian的镜像文件哪里有?我也想搞个玩玩

swap2013 发表于 2014-9-15 14:57:24

真能忍,用2440编译过firefox还是什么软件,一晚上都没完,果断放弃。

dawanpi 发表于 2014-9-15 14:59:18

bruce_helen 发表于 2014-9-15 14:50
楼主,Debian的镜像文件哪里有?我也想搞个玩玩

Element14的社区有讨论怎么编译的:
http://www.element14.com/community/community/designcenter/single-board-computers/riotboard/blog/2014/08/01/building-linux-kernel-on-riotboard-for-riotboard
基本上就是先安装官方的那个旧的Linux,然后在上面编译新的Linux,内核 rootfs什么的。

allen_comm 发表于 2016-4-18 20:39:03

我跟你很像啊

allen_comm 发表于 2016-4-18 20:39:17

我也是用的imx6solo来开发应用

allen_comm 发表于 2016-4-18 20:39:41

并且开发板用的也是英蓓特的RIoTBoard

sigma318 发表于 2016-9-21 21:16:21

顶LZ,14年摸过几天solo
页: [1]
查看完整版本: [分享]在i.MX 6Solo上编译并运行QT5应用