玩转mini2440开发板之【下载编译安装运行QT lib/QT Creator/QT程序全过程】

玩了这么久的mini2440开发板,今天终于完整的将QT研究了一遍,从下载QT库的源码包、配置、编译、安装,然后再到QT Creator的下载、安装和配置,进而新建一个工程,并成功编译,下载到开发板中,最后通过配置开发板的运行环境,使得程序成功运行起来,算是将所有流程都理解并执行了一遍。下面就将整个过程记录如下,以备参考:


O、开发环境介绍

主机系统:win10(64位); 虚拟工具:Virtualbox 5.2.0; 虚拟系统:Ubuntu 14.04(64位);

一、QT lib库

1、下载

可直接从友善之臂的光盘中获取,arm-qte-4.8.5-20131207.tar.gz的压缩包中就有了,qt-everywhere-opensource-src-4.8.5.tar.gz。当然,找不到压缩包的同学也可以自行去QT的官网(http://download.qt.io/archive/qt/)下载,内容应该是一样的。

这里需要注意的是,我们要下载的是源码压缩包,而不是现成编译好的可执行文件。下载好了之后解压,命令如下:

tar -xvzf qt-everywhere-opensource-src-4.8.5.tar.gz

说明一下:为了详细了解具体的编译和配置过程,我这里并没有直接使用友善之臂在arm-qte-4.8.5-20131207.tar.gz压缩包里预置好的脚本文件进行后续的配置和编译工作,而是自己摸索。

特别说明:请注意以下内容:

根据网上的资料,下载完后要对其中的一个配置文件进行修改,位于qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++目录下的qmake.conf文件:

原文是:

#
# qmake configuration for building with arm-linux-g++
#

include(//common/linux.conf)
include(//common/gcc-base-unix.conf)
include(//common/g+±unix.conf)
include(//common/qws.conf)

# modifications to g++.conf
QMAKE_CC = arm-linux-gcc
QMAKE_CXX = arm-linux-g++
QMAKE_LINK = arm-linux-g++
QMAKE_LINK_SHLIB = arm-linux-g++

# modifications to linux.conf
QMAKE_AR = arm-linux-ar cqs
QMAKE_OBJCOPY = arm-linux-objcopy
QMAKE_STRIP = arm-linux-strip

load(qt_config)

修改为:

#
# qmake configuration for building with arm-linux-g++
#

include(//common/linux.conf)
include(//common/gcc-base-unix.conf)
include(//common/g+±unix.conf)
include(//common/qws.conf)

# modifications to g++.conf
QMAKE_CC = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc
QMAKE_CXX = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-g++
QMAKE_LINK = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-g++
QMAKE_LINK_SHLIB = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-g++

# modifications to linux.conf
QMAKE_AR = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-ar cqs
QMAKE_OBJCOPY = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-objcopy
QMAKE_STRIP = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-strip

load(qt_config)

特别说明:根据网上的资料,有人说这里要修改,但是更多的人却没有提到,说法不统一。经过我本人的亲自验证发现,如果此处不改,那么在make intsall时会提示arm-linux-strip找不到,会报一大堆的错误。然而错归错,最终安装出来的文件拷贝到开发板上却也能正常运行,搞不懂是什么原因。不过,为了保险起见,我最终还是修改了这个文件,消除了里面的错误提示。至于其中的具体原因,此处就没有进行详细的分析,待日后有机会再慢慢研究。

2、配置

请选确保系统中已经按照友善之臂的介绍步骤,安装好了arm-linux-gcc 4.4.3版本的编译器。其他版本的编译器,我没有验证,不保证可用。

在开始配置之前,要交代一下。根据QT官方的说法,建议大家不要在QT源码的目录下直接进行编译,这样会污染源码所在的目录,无法达到多个版本共存编译的效果。可以在QT源码所在的同级目录下,新建一个临时用的编译目录,只为存放编译脚本和编译所产生的临时文件。如下:

leon@Ubuntu:~/tempuse$ ll
总用量 20
drwxrwxr-x  4 leon leon 4096  8月 26 11:10 ./
drwxr-xr-x 30 leon leon 4096  8月 26 11:07 ../
drwxrwxr-x 43 leon leon 4096  8月 26 11:07 qt-everywhere-opensource-src-4.8.5/

leon@Ubuntu:~/tempuse$ mkdir qt-4.8.5-mini2440

leon@Ubuntu:~/tempuse$ ll
总用量 32
drwxrwxr-x 7 leon leon 4096 8月 26 11:13 ./
drwxr-xr-x 30 leon leon 4096 8月 26 11:07 /
drwxrwxr-x 2 leon leon 4096 8月 26 11:13 qt-4.8.5-mini2440/
drwxrwxr-x 43 leon leon 4096 8月 26 11:07 qt-everywhere-opensource-src-4.8.5/

于是,可以在qt-4.8.5-mini2440目录下进行代码编译,而不会影响到源码所在的目录。万一编译出错啥的,只要删除临时目录就可以恢复现场重来,不用去处理源码所在的目录。

然后进入qt-4.8.5-mini2440的目录,新建一个config.sh的文件,输入以下配置命令:

#!/bin/sh

.//qt-everywhere-opensource-src-4.8.5/configure
-opensource
-confirm-license
-release
-shared
-fast
-embedded arm
-xplatform qws/linux-arm-g++
-no-3dnow
-no-libmng
-no-opengl
-no-openssl
-no-mmx
-no-sse
-no-qvfb
-no-glib
-no-webkit
-no-phonon
-no-neon
-qt-mouse-tslib
-qt-libjpeg
-qt-libpng
-qt-zlib
-little-endian
-depths 16,18,24
-I/usr/local/tslib/include
-L/usr/local/tslib/lib
-prefix /opt/qt-4.8.5-mini2440

注1:这里用到了tslib,你必须先编译和安装tslib,并在此处指定好相关的头文件和库文件的路径信息。具体的方法请参见我的另外一篇博客(玩转mini2440开发板之【在Ubuntu 14.04下编译安装tslib 1.4版本】)。

注2:这里涉及到了很多参数,其中一部分我是完全理解的,另外一部分我不是特别理解,只是从网上照搬过来的。虽然经过我自己的验证是可行的,但是并不代表在其他人(比如你)的环境下也仍然可行。所以,如果你使用上述命令配置失败,则请仔细阅读出错的提示信息,然后进行针对性的修改(当然,如果你自己想多搞清楚一点,也完全可以通过config命令的help帮助来获得提示)。

注3:这里“-prefix /opt/qt-4.8.5-mini2440“是用于指定编译之后库文件所安装的位置,你可以按照你自己的规划和要求来更改,但是要记住该目录位置,因为后续会用到。

保存并退出,然后通过以下命令给该文件增加可执行的属性,并执行之。

chmod a+x config.sh
./config.sh

如果一切顺利的话,大约1-2分钟之后,就会提示配置成功,如下。

Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /opt/qt-4.8.5-mini2440

To reconfigure, run ‘make confclean’ and ‘configure’.

3、编译

配置成功之后,就可以进行编译了。输入下述命令开始编译。由于源码内容较多,编译时间会很长,以我的电脑i3-4160 3.6GHz处理器+4G内存的配置,编译了差不多80分钟。

make -j4 > make.log								# -j4是表示多进程编译,后面的语句用意参见下注

注:这里用到了自定义输出映射,具体的用法请参见我的另外一篇博客(如何将linux编译过程中的警告及错误信息输出到文件中)

4、安装

编译完成后,输入下述命令便可直接安装到之前预设的目录下:

sudo make install								# 加sudo是为了增加权限,如果你的权限够可以不用加

此步骤执行完毕之后,就可以在’/opt/qt-4.8.5-mini2440’目录下看到程序自动安装好的文件信息了。这些文件信息在后面会用得上。


二、QT Creator

QT Creator就是用来进行QT程序的可视化设计、编辑、编译、调试等过程的一套IDE工具,你可以理解成是windows系统下的VS 2010或者Keil/IAR之类的工具。不过与他们不同的是,QT Creator本身不带编译器/链接器/调试器等,也就是说它只是一个编辑器。这也就是为什么我们必须在前面的步骤中先安装QT lib库的原因了。只有安装好了前面的库,接下去的QT Creator才能进行编译。

另外,还要说明一下的是,QT Creator的版本与QT lib库的版本也没有特别的对应要求。比如本文中的QT lib库使用的是4.8.5的版本,那么QT Creator则不一定非要使用同样的版本,而且QT Creator似乎也没有这个版本,像我自己使用的就是此刻最新的版本QT Creator 4.7.0版本。

1、下载

如前所述,我这里使用的最新版的QT Creator 4.7.0版本,直接去QT官网(http://download.qt.io/official_releases/qtcreator/4.7/4.7.0/qt-creator-opensource-linux-x86_64-4.7.0.run)下载即可。

当然,如果你觉得版本太高,怕不兼容,或者你的电脑配置不够(比如不是64位),那也可以选择低版本的,应该是没有问题的。

2、安装

因为我们刚刚下载的是.run的文件,它安装起来很方便,直接运行就可以安装,类似win系统下的exe安装包一样,此处就不再多说。

3、配置

如上所述,QT Creator刚装好时,本身是没有携带编译器套装的,因此这个时候是无法正常使用的,必须先配置和指定编译器套装的路径信息。在菜单里选择“工具”–“选项”,如下:

3.1、添加QT Version

切换到QT Version界面,点击添加,然后定位到/opt/qt-4.8.5-mini2440/bin目录下的qmake文件,选择即可。
这里写图片描述
3.2、添加编译器

切换到编译器页面。这里要分两步添加,分别是gcc编译器和g++编译器。如果你也是按照友善之臂官方的步骤所安装的话,两个编译器都位于/opt/FriendyARM/tooschain/4.4.3/arm-none-linux-gnueabi/bin目录下,一个是gcc文件,一个是g++文件,对应选择即可。至于其中的MINI2440-GCC和MINI2440-G++的名称,那是我自己取的,便于识别,大家可以自己随意修改。
这里写图片描述
这里写图片描述
这里写图片描述
3.3、添加套件

切换到套件页面,同样点击添加。在名称一栏输入你想要的名字,编译器两栏选择你刚刚添加的编译器,调试器里就选系统原配的调试器gdb即可,QT版本一栏选择qt-4.8.5-mini2440。
这里写图片描述
至此,QT Creator的所有配置就算完成,接下去就可以开始新建一个工程大展身手了。


三、实际项目

下面就来新建一个实际的工程,编译和运行。

1、新建工程

打开QT Creator,在首界面的Project页面下,选择”New Project“,便会弹出一个新建项目的窗口,选择Qt Widgets Applications,然后依次点击下一步即可。
这里写图片描述
步骤1、选择项目类型
这里写图片描述
步骤2、选择项目位置
这里写图片描述
步骤3、选择工具套装
这里写图片描述
步骤4、定义项目详情
这里写图片描述
步骤5、选择管理系统

2、工程配置

QT Creator的界面使用与windowsx系统下的大多数IDE类似,这里仅做简单的介绍,详细的用法大家可以自己摸索,也可以去网上找资料,一找一大把。
这里写图片描述
1区:进入代码编辑模式;
2区:进入工程选项设置模式;
3区:选择编译套装(我这里选了一个4.8.5-MINI2440的套装,用于编译出可以在开发板上运行的可执行文件。还选了一个5.9.2-X11的套装,用于编译出PC端上运行的可执行文件);
4区:点开可以选择当前被激活的套装;
5区:编译之后点击此处就可以直接运行(仅对PC端套装生效);
6区:进行编译;

3、编码编译

首先点击上述的1区按钮,进入源码编辑模式:
这里写图片描述
然后点击图中红色区域的ui配置文件,进入界面编辑模式:
这里写图片描述
第一步就是要修改一下窗体大小,根据你的显示屏实际大小修改,我这里修改为240*240。
第二步就是在控件区随便拉几个控件放到窗体上,弄点效果出来,到时便于观察卡。
处理好了就可以点击编译的按钮进行编译。

4、拷贝下载

编译完成之后,便可将可执行文件拷贝到开发板上。

我这里使用的是NFS网络文件系统,所以直接拷贝到虚拟机的rootfs目录下的usr目录下,然后启动在开发板上进入该目录运行即可。对于这种频繁下载文件甚至需要大量拷贝替换文件的场合,使用NFS非常的方便,强烈推荐大家使用这个方法。至于如何搭建NFS开发环境,可参考我的另外一篇博客(玩转mini2440开发板之【如何通过vivi的命令行来启动nfs网络文件系统】)。

不过,请千万注意,此时光拷贝一个可执行文件是不够的,一旦运行肯定会出错,因为它所依赖的QT库文件和环境都没有搭建起来。这就要回到前面的第一大点的第4点中所安装的qt库了。此时需要将前面安装在Ubuntu里的/opt/qt-4.8.5-mini2440目录下的所有文件(即整个文件夹)全部复制到开发板上(当然,如果你使用的是NFS,则复制到PC端相应的目录下即可)程序才能正确的运行。具体步骤如下:

1、将ubuntu系统中安装好的qt lib文件原封不到的全部拷到开发板上,请注意,拷贝的目录必须与ubuntu系统的目录一致。以本文为例,我之前config的时候,指定的安装目录是/opt/qt-4.8.5-mini2440,那么此时也必须将其同步拷贝到开发板的这个目录下,不能更换。否则后面运行的时候会提示fonts字体等其他资源找不到;

2、拷贝好/opt/qt-4.8.5-mini2440目录之后,接下去就是要将该目录加入到环境变量中去,否则系统一样无法检测到所需的库文件。保险起见,我这里加了两处地方,一处是/home/plg/.bashrc(这里的plg是开发板的用户名,请自行替换),另一处是/etc/profile。要加入的内容如下:

export QTDIR=/opt/qt-4.8.5-2440
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

3、由于qt编译的程序大多数要会用到触摸屏,因此tslib也要拷贝进来,否则等会运行程序时一样还是会出错。具体的步骤,请参考我的另一篇博客【在Ubuntu 14.04下编译安装tslib 1.4版本】。

5、实际运行

通过开发板的串口交互,进入到usr目录下,首先看下test文件是否已经具备了可执行的属性,如果没有就加一下。然后执行运行该文件。此时可看到给出如下的提示信息:

[root@FriendlyARM /usr]# ./test 
QWSSocket::connectToLocalFile could not connect:: No such file or directory
QWSSocket::connectToLocalFile could not connect:: No such file or directory
QWSSocket::connectToLocalFile could not connect:: No such file or directory

这是因为:在嵌入式QT版本中,程序需要服务器或自己作为服务器程序。服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象。或者使用-qws命令选项启动程序。

所以必须在后面加一个参数-qws,如下:

[root@FriendlyARM /usr]# ./test -qws

界面效果如下:
这里写图片描述

四、写在后面

1、本文涉及到QT lib(即QT库)和QT Creator两个大件,而且二者并不是集成的关系,而是互相独立的。对于这二者不太清楚的,可以参考一下我的其他有关QT的博客,了解一下。

2、考虑到兼容性,此处的QT lib使用的是友善之臂推荐的4.8.5版本,属于很旧的版本了。比较新的版本,我自己做过一些简单的尝试,暂时都没能成功,如果后续有时间,我还会继续尝试。当然,太新的版本,其实也不建议使用,因为MINI2440开发板本身性能有限,新版本一般都会加入很多特效,板子跑不起来也是白搭。

3、其他未尽事宜,待日后慢慢完善。有任何问题,也欢迎留言交流。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值