环境:
Ubuntu10.04
arm linux OS: 3.0.1
arm上 qt-4.7.1
g++ / gcc 4.4.3
arm-linux-g++ / arm-linux-gcc 4.3.2
特别标注:
有些网站转载我的文章不标明出处,并且转载不到位,没有把相应的链接一块转过去,比如说下载链接或相关文献的链接等,导致一些网友阅读和使用出现障碍和知识的不连续,所以在此特别标注:我的这篇文章发表在CSDN博客上,可以到CSDN博客来阅读。
正题:
由于没接触过ARM,linux也只懂些皮毛而已,但现在开发需要,没办法,只能接触这块硬骨头。
之前买了块OK6410开发板,由于里面学习资料有限,研究了好长时间还是不明就理,什么QT、QT4.**、QTOpia2.**、QTOpia4.**、QTEmbedded、QTDesigner、QTCreator…… 一大堆的QT,不知道这些有什么关联,复杂,搞不懂呀。
接触之前就知道这是块难啃的骨头。
但我的主题只有一个,就是我写的程序能在Linux ARM上能够运行,
由此我就要有一个开发用的IDE,IDE编译出来的程序能够在ARM上运行;
IDE要选那个呢?有文章说用QTDesinger,有说用QTCreator等等。
经过资料查询,其实QTDesinger和QTCreator都可以,QTCreator更类似于我常用的VC++ IDE;
OK6410 Linux版本里面又两个图像界面,一个是QTOpia2界面,一个是QT4界面。
平常都在写VC程序,所以更喜欢QTCreator(其实QTDesinger包含于QTCreator)
以上就是我对众多QT的一点皮毛理解,可能有误,但对于现在的我来说已经是一大越进。
下面就重点来讲讲QTCreator + QTEmbedded 在Ubuntu上创建嵌入式ARM开发环境
首先得装载在ubuntu上装载arm编译器:arm-linux-gcc,arm-linux-g++ (如何安装网上资料很多,OK6410随带的资料里面也有)
接着用ubuntu编译QT4.7.1(也就是QTEmbedded),它的源码名称是:qt-everywhere-opensource-src-4.7.1.tar.gz
解压编译之后如下图所示:(注:QtEmbedded-4.7.1-arm这个名称是后来更改的,原名称是解压包的名称)
接着进入 bin 文件夹,把qmake名称改为qmake-arm (以便区别,不改也可以)
下来就在Ubuntu上安装QTCreator,直接在ubuntu的“新立得软件包管理器“搜索安装即可。
接着运行QTCreator编写一个简单的程序
在PC端运行成功之后(如下图)
就可以进行arm端程序的编译了
把QTCreator创建的应用程序编译成ARM版本很容易,用嵌入式ARM版的QT4的qmake(即刚才改名成qmake-arm的qmake)工具创建Makefile文件,然后make就可以了。
进入到工程文件夹里面
运行qmake-arm命令:
此时将生存Makefile文件
从Makefile文件的内容我们可以看出,编译器已经采用了arm-linux-gcc 或 arm-linux-g++,这样make之后,就编译出可以运行在ARM上的QT4环境运行的程序了。
相关阅读:
QtCreator动态编译jsoncpp完美支持x86和arm平台http://www.linuxidc.com/Linux/2012-02/53678.htm
Ubuntu下嵌入式开发环境的搭建 http://www.linuxidc.com/Linux/2011-03/33824.htm
接下来在终端运行make:
出现以上情况时,是由于刚才在QTCreator上已经编译了一次,生存了一些编译文件,make检测到编译文件已经存在,就会出现“没扫描可以做****”的提示,但这些文件不是我们所要的,所以必须得先删除。
运行make clean命令删除编译过程中的临时文件
然后再运行make命令
如此便编译成功了。
把编译出来的jasonque程序拷贝到开发板。
OK6410初始运行的是QtOpia2.2,界面如下
现在运行QT4的ARM程序
(注:OK6410 的linux3.01版本已经安装有QT4了,版本为qt-4.7.1,如下图,所以要运行QT4,就先得确认已经安装有QT4,没有的自行移植安装,网上资料很多)
好,现在在连接开发板的超级终端里运行“qt4 &”命令,进入到QT4界面环境(或者不进入也行):
进入之后,就可以运行刚才我们编译好的程序了,
在装载程序的文件目录里面运行如下命令运行程序:
# ./jasonque -qws
以下就是运行的结果,和PC端运行出来的效果一样
OK,本文就此结束!
更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2