QT的安装问题(尤其是针对QT-embedded-opensource-x86 无法使用qvfb的问

2019-07-13 04:33发布

先看看Qt的各个版本简介: 1.什么是QT Qt是一个完整的C++应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。Qt
API
在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致,
因而Qt应用的开发和部署与平台无关。 2.什么是Qtopia Qtopia
是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于LinuxPDA(个人数字助理),智能电话(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 core
7
,需要的Qt版本有两个: 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 a) tar –jxvf qt-x11-opensource-src-4.3.2.tar.gz b) tar –jxvf
qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2
c) cp qt-embedded-linux-opensource-src-4.4.0-rc1
qt-embedded-linux-opensource-src-4.4.0-rc1-x86
d) 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-embeddeddarm库再次编译就可以得到在arm上能运行的可执行程序。很明
显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm
架构的。 ----------------------------------------------------------- 具体步骤与说明: 1. 下载源码包 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版本就是专门用于嵌入式方面的版本。 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架构的也不错。 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. 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).下一步:设置环境变量 (1)qt-x11: vi setenv.sh 添加如下内容: 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中。 (2)qt-embedded-x86: vi setenv.sh 添加如下内容: 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中。 (3)qt-embedded-arm: vi setenv.sh 添加如下内容: 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: cd /usr/local/Trolltech/Qt-4.5.0 source setenv.sh 然后就可以用qmake designer等工具了. 5.做到这一步还有qvfb没有编译,qt-x11-opensource-src-4.5.0中重新编译qvfb即可 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 cp ../..bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin   注意:   此时单独编译qvfb有时候会出现如问题:     错误:(1) qvfb.cpp:771: 错误:‘DeviceSkinParameters’ 在此作用域中尚未声明
qvfb.cpp:771:
错误:expected `;'' before ‘parameters’
qvfb.cpp:773:
错误:‘parameters’ 在此作用域中尚未声明
qvfb.cpp:773:
错误:‘DeviceSkinParameters’ is not a class or namespace
make: *** [.obj/release-shared/qvfb.o]
错误 1
原因:缺少deviceskin.h头文件! 解决方法:在/tools/shared/deviceskin/下面下面找到 deviceskin.h 头文件,复制到qvfb目录下。 接着 make 可能出现错误(2) ...../tools/qvfb/x11keyfaker.cpp:544: undefined reference to `XTestQueryExtension''
collect2: ld
返回 1
make: *** [qvfb]
错误 1
原因:缺少一个库 libxtst 解决方法:安装此库   apt-get install libxtst-dev (Ubuntu Linux发行版中!) (在RHEL 上执行:$yum-updatesd install libxtst-dev 所以总的解决办法是: 1.复制deviceskin.hdeviceskin.cppqvfb文件下。 2.qvfb文件夹下手动生成qvfb工程。    qmake -project 3.生成 Makefile    qmake qvfb.pro 4.修改Makefile     Makefile LIBS 选项中: 添加 -lXtst 选项 5.编译 make   6.做一个测试 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 -----------------------------------------------------------