地址: 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 嵌入式开发环境搭建的更多相关文章

  1. Qt嵌入式开发环境搭建

    一.Qt版本介绍 按照不同的图形界面来划分,分为四个版本: 1.Win32版:适用于windows平台 2.X11版:适用于各种X系统的Linux和Unix平台 3.Mac版:适用于苹果的MacOS ...

  2. ubuntu-10.10嵌入式开发环境搭建【转】

    本文转载自:http://blog.csdn.net/zjhsucceed_329/article/details/8036781 版权声明:本文为博主原创文章,未经博主允许不得转载. ubuntu- ...

  3. ubuntu 12.04 下搭接Qt 嵌入式开发环境

    1.安装前的准备工作 (1)有ubuntu12.04 的系统镜像(也可以其他linux 如Fedorea9),都是安装好的 (2)虚拟机VMWare 或 VirtualBox ,两者都可以,都是安装好 ...

  4. 嵌入式开发环境搭建(一) 虚拟机实现桥接Ethernet网口 并且通过WIFI进行NAT联网

    背景: 目前手头上有一块JZ2440的板子,之前有搭建完整套开发环境,由于虚拟机故障需要从新搭建服务器端,故在此记录搭建步骤 环境: Ubuntu16.4 VMWare 12 先行条件: 先按照自定义 ...

  5. ubuntu16安装及嵌入式开发环境搭建

    1.Ubuntu虚拟机新建好要安装vmware tools才能共享文件夹,解压安装tar zxf VMwareTools-10.0.10-4301679.tar.gz ,回车键,解压该文件. 解压完毕 ...

  6. QT树莓派交叉编译开发环境搭建

    QT树莓派交叉编译开发环境搭建 - JerryZone <Cross-compiling Qt Embedded 5.5 for Raspberry Pi 2> <Qt for Em ...

  7. arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc)

    arm-linux-gnueabihf-gcc下载 qt下载 arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc) Ubuntu 16.04 安装QT arm嵌入式 ...

  8. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  9. android开发环境搭建日记和嵌入式Android开发环境初探

    非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs ...

随机推荐

  1. AsyncTask和Handler的优缺点比较

    AsyncTask实现的原理和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口 ...

  2. LINQ 内链接 左链接 右链接

    原文地址:http://blog.sina.com.cn/s/blog_46e9573c01014fx2.html 1.左连接: var LeftJoin = from emp in ListOfEm ...

  3. guestmount

    guestmountFor some types of changes, you may find it easier to mount the image's file system directl ...

  4. 为什么选择Premium Fabric Shanghai

    展商首页 为什么选择Premium Fabric Shanghai

  5. Tradesy | IT桔子

    Tradesy | IT桔子 Tradesy www.tradesy.com   认领 关注 分享

  6. python Aspscheduler 定时任务框架使用

    前几日,爬虫基本能爬点东西出来了,现在需要实现定时把数据爬到DB里去,可以使用windows定时任务执行py脚本,但好像不彻底,要做一个纯(jiao)粹(qing)的程序员,定时任务的重任落到了Asp ...

  7. CopyOnWriteArrayList理解与理解

     CopyOnWriteArrayList,因何而存在? ArrayList的一个线程安全的变体,其所有可变操作(add.set 等)都是通过对底层数组进行一次新的复制来实现的,代价昂贵. CopyO ...

  8. 一维DFT

    学习DIP第3天 傅里叶变换是一个非常大的话题.今天实现了下一维的DFT,兴许将完毕其它傅里叶系的算法实现和实验. DFT公式:                             当中e 是自然 ...

  9. Qt install Phonon

    sudo apt-get install libphonon-dev phonon-backend-gstreamer

  10. DefaultResouceLoader的设计

    它是什么 DefaultResourceLoader是Spring中的ResourceLoader的默认实现类,也是AbstractApplicationContext的父类,它也可以单独使用,用来从 ...