转:Qt 嵌入式开发环境搭建
地址: http://www.cnblogs.com/lishixian/articles/3013897.html 作者:lsx_007
这里主要是记录了自己在搭建嵌入式开发环境时阅读的一些有价值的参考文档,文档主要来自于网络,由于是从文库中下载,所以也不知道 文档的出在哪?因为个人觉得总结的比较好,我暂且拿过来记录下,当然在此基础上也会加上我自己的理解!这篇文章主要是以问答的形式来组织。
QT嵌入式开发环境是本文所要介绍的内容,我们先看看Qt的各个版本简介:
1.什么是QT
Qt是一个完整的C++应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。Qt API在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致, 因而Qt应用的开发和部署与平台无关。
2.什么是Qtopia
Qtopia 是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于Linux的PDA(个人数字助理),智能电话(Smartphone)以及其他移动设备的用户界面。简单地说,Qtopia实质上是一组关于PDA和智能电话的应用程序结合,如果需要开发这类产品可以在这组程序的基础上迅速构建出 PDA或者智能电话。Qtopia实质上依赖Qt/Embedded。
3.什么是Qt/Embedded
Qt/Embedded 是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具。这个开发工具的名字好像最容易混淆,当然Qt/Embedded是最熟悉的名字,好像Qtopia Core说的也是它。最近,奇趣公司又改名字了,它的新名字叫做qt-embedded-linux-xxxx,看来这个Qt/Embedded的马甲还很多哈。
下面就是搭建Qt开发平台了,我的平台是Fedora 15,需要的Qt版本有两个:
1
2
|
qt-x11-opensource-src-4.3.2.tar.gz qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2 |
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。下面是安装步骤:
1.解压这两个qt包
1
2
3
4
|
tar –jxvf qt-x11-opensource-src-4.3.2.tar.gz tar –jxvf qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2 cp qt-embedded-linux-opensource-src-4.4.0-rc1 qt-embedded-linux-opensource-src-4.4.0-rc1-x86 mv qt-embedded-linux-opensource-src-4.4.0-rc1 qt-embedded-linux-opensource-src-4.4.0-rc1-arm |
这里,qt-embedded有两个复制:qt-embedded-linux-opensource-src-4.4.0-rc1-x86 和qt-embedded-linux-opensource-src-4.4.0-rc1-arm,根据他们的名字可以知道前者是适合x架构的,后者适合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。
这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来开发,但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。
而将qt-embedded编译成arm,又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddedd的arm库再次编译就可以得到在arm上能运行的可执行程序。
很明显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm 架构的。
具体步骤与说明:
1. 下载源码包
1
2
|
qt-x11-opensource-src-4.5.0.tar.bz2 qt-embedded-linux-opensource-src-4.5.0.tar.bz2 |
下载地址:ftp://ftp.qtsoftware.com/qt/source/
2.编译及安装qt-x11-opensource-src-4.5.0
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。
1
2
3
4
5
|
tar xjvf qt-x11-opensource-src-4.5.0.tar.bz2 cd qt-x11-opensource-src-4.5.0 ./configure make make install |
历经漫长的编译过程,约一个半小时,默认安装在/usr/local/Trolltech/Qt-4.5.0下.编译完成后源程序不要删除,还有用
3.编译及安装qt-embedded-linux-opensource-src-4.5.0
在用户目录下建立一个src目录,用于存放编译源文件qt-embedded-linux-opensource-src- 4.5.0.tar.bz2。将其解压得到qt-embedded-linux-opensource-src-4.5.0,重命名为qt- embedded-linux-opensource-src-4.5.0-x86. 再次解压qt-embedded-linux-opensource-src-4.5.0.tar.bz2,并重命令为qt-embedded- linux-opensource-src-4.5.0-arm.为什么有两个复制呢?我们可以从他们的名字上就不难看出前者是适合x架构的,后者适合 arm架构的,如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错.
1
2
3
4
5
6
7
8
9
10
|
mkdir ~/src mv qt-embedded-linux-opensource-src-4.5.0.tar.bz2 ~/src tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2 mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-x86 tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2 mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-arm cd qt-embedded-linux-opensource-src-4.5.0-x86 ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -qvfb make make install |
OK! qt-embedded-x86被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-x86下!!!!
1
2
3
4
|
cd qt-embedded-linux-opensource-src-4.5.0-arm ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm make make install |
OK!qt-embedded-arm被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-arm下!!!
4.至此我们已经安装好了qt-x11版,即在PC机上运行的QT,qt-embedded-x86版(x86体系的嵌入式板子上运行的QT)和qt-embedded-arm(arm板子上运行的QT).下一步:设置环境变量
4.1 qt-x11:
1
|
vi setenv.sh |
添加如下内容:
1
2
|
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.5.0/lib:$LD_LIBRARY_PATH |
保存退出.移到/usr/local/Trolltech/Qt-4.5.0中
4.2 qt-embedded-x86:
1
|
vi setenv.sh |
添加如下内容:
1
2
3
|
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-x86 PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin:$PATH LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/lib:$LD_LIBRARY_PATH |
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-x86中
4.3 qt-embedded-arm:
1
|
vi setenv.sh |
添加如下内容:
1
2
3
|
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/lib:$LD_LIBRARY_PATH |
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-arm中
我们在运行的时候分别运行对应的脚本即可,比如我们要用qt-x11:
1
2
|
cd /usr/local/Trolltech/Qt-4.5.0 source setenv.sh |
然后就可以用qmake designer等工具了
5.做到这一步还有qvfb没有编译,到qt-x11-opensource-src-4.5.0中重新编译qvfb即可
1
2
|
cd qt-x11-opensource-src-4.5.0 cd /tools/qvfb |
make --会在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我们将它copy至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下
1
|
cp ../..bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin |
6.做一个测试
1
2
3
4
5
|
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86 source setenv.sh cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86/demos/books qvfb -width 640 -height 480 & ./books -qws |
出错信息一般为
1
|
Error opening buffer device /dev/fb0QScreenLinuxFb::connect: No such file or directory |
这种情况发生最多的是编译Qt-Embedded的x86版本,希望在qvfb上运行应用时
使用者在
第一步运行qvfb后
第二步运行./myapp -qws
出现以上的提示错误
原因是Qt-Embedded在查找系统的显示设备时,默认去寻找LinuxFb,也即Linux的/dev/fb0设备,但是如果Qt- Embedded安装了其它显示设备,比如qvfb,则可以在qvfb上显示,但是需要一个插件(或者说驱动,可能会和设备驱动混淆),使Qt- Embedded能使用qvfb。 为了作到这一点,需要在编译Qt-Embedded时的configure命令加上如下选项
1
|
./configure -plugin-gfx-qvfb -plugin-kbd-qvfb -plugin-mouse-qvfb 或./configure -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb |
如果,你不想重新编译Qt-Embedded,也可以单独编译qvfb的gfxdrivers,命令如下:
1
2
|
cd qt-embedded-linux-opensource-src-4.5.1/src/plugins/gfxdrivers/qvfb/$/usr/local/Trolltech/QtEmbedded-4.5.1/bin/qmake$ sudo make install |
对应所在的路径,在大家的机器上可能不尽相同,领会意思就行
小结:关于QT嵌入式开发环境搭建的内容介绍完了,希望本文对你有所帮助!
转:Qt 嵌入式开发环境搭建的更多相关文章
- Qt嵌入式开发环境搭建
一.Qt版本介绍 按照不同的图形界面来划分,分为四个版本: 1.Win32版:适用于windows平台 2.X11版:适用于各种X系统的Linux和Unix平台 3.Mac版:适用于苹果的MacOS ...
- ubuntu-10.10嵌入式开发环境搭建【转】
本文转载自:http://blog.csdn.net/zjhsucceed_329/article/details/8036781 版权声明:本文为博主原创文章,未经博主允许不得转载. ubuntu- ...
- ubuntu 12.04 下搭接Qt 嵌入式开发环境
1.安装前的准备工作 (1)有ubuntu12.04 的系统镜像(也可以其他linux 如Fedorea9),都是安装好的 (2)虚拟机VMWare 或 VirtualBox ,两者都可以,都是安装好 ...
- 嵌入式开发环境搭建(一) 虚拟机实现桥接Ethernet网口 并且通过WIFI进行NAT联网
背景: 目前手头上有一块JZ2440的板子,之前有搭建完整套开发环境,由于虚拟机故障需要从新搭建服务器端,故在此记录搭建步骤 环境: Ubuntu16.4 VMWare 12 先行条件: 先按照自定义 ...
- ubuntu16安装及嵌入式开发环境搭建
1.Ubuntu虚拟机新建好要安装vmware tools才能共享文件夹,解压安装tar zxf VMwareTools-10.0.10-4301679.tar.gz ,回车键,解压该文件. 解压完毕 ...
- QT树莓派交叉编译开发环境搭建
QT树莓派交叉编译开发环境搭建 - JerryZone <Cross-compiling Qt Embedded 5.5 for Raspberry Pi 2> <Qt for Em ...
- arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc)
arm-linux-gnueabihf-gcc下载 qt下载 arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc) Ubuntu 16.04 安装QT arm嵌入式 ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- android开发环境搭建日记和嵌入式Android开发环境初探
非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs ...
随机推荐
- C51的一些误区和注意事项
1) C忌讳绝对定位.常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了.在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作用域,编译器就把一个固定地址给这个变量.怎么取得这个 ...
- 用vlc SDK创建一个播放视频文件和RTSP流视频的Demo
#include <stdio.h> #include <tchar.h> #include <time.h> #include <windows.h> ...
- 许多js框架或js库的min版本是怎么做出来的?
如jQuery,Bootstrap,AngularJs,这些都有min版本,代码更加精简,功能却相同.看了源代码,几乎不可读. 这种事情的工具类型叫做“minifier”.请看传送门:Minifica ...
- AngularJs中文社区学习资料
AngularJs中文社区学习资料,供学习: http://angularjs.cn/tag/AngularJS
- Windows服务器Pyton辅助运维--03.安装Visual Studio 的 Python 开发插件 PTVS
PTVS (Python Tools for Visual Studio) http://pytools.codeplex.com/ 当前版本:2.1 RC PTVS (Python Tools fo ...
- CentOS 6.3下Samba服务器的安装与配置(转)
CentOS 6.3下Samba服务器的安装与配置 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写, ...
- 关于使用百度ueditor时的一些问题
本来这些问题直接在百度贴吧里回答不就完事了,可是好死不死的,百度贴吧里老出现 未知错误,错误号:230274 看来还是算了,自己做一个随笔记录一下好了 关于我们获取里面的内容时,老是会有一个<p ...
- android后台截屏实现(2)--screencap源码修改
首先找到screencap类在Android源码中的位置,/442/frameworks/base/cmds/screencap/screencap.cpp 源码如下: /* * Copyright ...
- Java基础知识强化54:经典排序之插入排序(InsertSort)
1. 插入排序原理图: 算法步骤: 1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列. 2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位 ...
- Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...