玩转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-stripload(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-stripload(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-mini2440leon@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-mini2440To 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、其他未尽事宜,待日后慢慢完善。有任何问题,也欢迎留言交流。
玩转mini2440开发板之【下载编译安装运行QT lib/QT Creator/QT程序全过程】相关推荐
- 玩转mini2440开发板之【编译u-boot提示没有规则可以创建“XX.o”需要的目标】
今天继续玩一玩mini2440开发板的u-boot的编译和下载. 首先,交代一下背景,我下载的是tekkamanninja大神于2010.03移植过来的mini2440定制版的u-boot(可以直接去 ...
- 玩转mini2440开发板之【编译烧录rootfs根文件系统全过程记录】
前段时间研究了一下如何使用busybox编译和生成最简linux根文件系统(rootfs),并在mini2440开发板上使用NFS网络文件系统进行挂载启动,今天继续研究如何将该根文件系统烧录到开发板上 ...
- 玩转mini2440开发板之【tekkamanninja版的u-boot的编译和烧录】
今天继续玩一玩mini2440开发板,弄清楚U-boot的编译和烧录过程. 首先,这里交代一个前提,此处所使用的u-boot,是已经移植测试过的,完全可用的版本.就本文而言,我使用的是tekkaman ...
- 玩转mini2440开发板之【如何使用JLink下载烧录boot程序到NorFlash】
一.工具及线束准备 1.准备一套Jlink V8(尽量使用这个版本的,其他版本没有验证过): 2.制作JTAG转接线,从Jlink下载器转至mini2440开发板的接口,如图1-3: 3.安装JLin ...
- 玩转mini2440开发板之【制作和修改linux启动logo图片】
今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...
- 玩转mini2440开发板之【在64位WIN7/WIN10系统中安装USB驱动】
玩mini2440开发板已经很多年了,虽然玩的不怎么精通,但是一直都有在弄.而电脑的操作系统也从最终的32位WinXP提升到了32位的Win7,而今更是到了64位的Win10.然后,却带来了一个很严重 ...
- 玩转mini2440开发板之【64位Ubuntu系统无法运行arm-linux-gcc】
前段时间由于工作原因,将虚拟机重装了,由原来的Ubuntu 12.04(32位)升级成了Ubuntu 16.04(64位).自然,原来安装在Ubuntu 12.04中的所有mini2440开发板相关的 ...
- 玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】
今天晚上研究了一下如何通过super-vivi来使用nfs网络文件系统来启动mini2440开发板,一开始一直无法成功,折腾了半天总算搞定了,总结一下: 1.首先,介绍一下我的开发环境. 物理机:wi ...
- 玩转mini2440开发板之【如何设置开发板的网络参数】
今天在研究nfs时,内核启动时一直提示挂载nfs文件系统失败,怀疑是网络参数没有配置正确,导致开发板连不上ubuntu.所以回过头来仔细研究了一下如何给mini2440开发板配置网络参数,验证网络连接 ...
最新文章
- [翻译]Python中yield的解释
- Nucleus SE RTOS初始化和启动
- Mish激活函数,ReLU的继任者
- Android学习笔记(十一):Activity-ListView
- 7 ArcMap能复制,不能粘贴
- python求阶乘之和_python计算阶乘前n项和
- linux-ubuntu下调出中文输入法
- mongoDB高级查询
- 使用InternalsVisibleToAttribute给assembly添加“友元assembly”特性遭遇强签名
- 萌新的Python练习菜鸟100例(十七)输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- jQuery slideToggler() 方法 -《狗嗨默示录》-
- (转)[数据库基础]——编码标准之命名
- 读取头部姿态数据集300W_LP、AFLW2000、BIWI数据集中的真值
- 计算机acaa证书,ACAA 认证三维模型师
- python饼状图显示其比例_Python学习笔记--使用matplotlib绘制饼状图
- QQ空间内容批量删除脚本
- luogu P4100 [HEOI2013]钙铁锌硒维生素
- jquery 自动触发a 标签的click()方法
- Java面试核心知识点(283页)Java面试题合集最新版(485页)
- 基于SSM框架的借阅图书管理系统