armqtopia版本|嵌入式Qt版本的选择

❶ 我想开发ARM9界面,是选择qtopia2.2.0 还是 qt4.5 ,前者比后者是不是已经集成了桌面系统库

我也正在做arm9开发,也为这个想了好久,最后决定用了qt4.5。要做商业应用的话,用那个桌面太乱,到用户手里估计用户就感觉复杂了。且qtopia2.20是不是有点老了。。。我用qt4.5,开机自动运行一个程序,我是做仪表开发的。

❷ QT编程与移植的问题

1. 简介QT是目前在linux上使用较广的一个图形系统。用户经常配合KDE桌面环境来使用。需要注意的是我们看到的并操作的是KDE,而不是QT。QT只是一套库函数(类库),KDE才是可执行程序.同时KDE为了其他程序方便的对其操作,也提供一套库函数(类库)。在PC机上的QT是基于X11图形系统的,在嵌入设备中往往不需要这么累赘,只需使用QTE(QT Embedded)即可包括PC平台中X11和QT库的功能。另一方面,嵌入设备受许多条件的限制,桌面系统也不能直接使用PC机上已有的系统。QTOPIA就是相当于KDE的桌面系统.根据具体嵌入设备的需要可以配置成phone和pocket pc两种。2. 准备工作2.1 目标首先要明确将要干的是什么,将怎么做。我们的目标很明确——就是在自己的开发板上使用基于QTE的桌面系统QTOPIA。我们的工作往往是先在PC完成以后移植到ARM平台上;先编译好QTE的库,再编译QTOPIA。因为这个系统和具体的设备有关(例如:触摸屏、时钟、电源管理设备等),所以最后还需要做设备接口的移植工作。2.2 软件包系统平台:RedHat 9(完全安装)qt-embedded-2.3.7.tar.gz (qte的库)qt-x11-2.3.2.tar.gz (为了生成相应的qtdesigner和qvfb)qtopia-free-1.7.0.tar.gz (qte的桌面环境程序)tmake-1.11.tar.gz (编译时会用到)e2fsprogs-1.35.tar.gz (只使用其中的uuid的库)当下载完这些包以后我们先建立一个工作环境。假设所有软件包都下载在用户目录下,通常都是/root。2.3 环境的建立# cd ~# mkdir x86-qtopia# tar zxvf qt-x11-2.3.2.tar.gz# mv qt-2.3.2 qt-x11# cd x86-qtopia# tar zxvf ../tmake-1.11.tar.gz# tar zxvf ../qt-embedded-2.3.7.tar.gz# tar zxvf ../qtopia-free-1.7.0.tar.gz# tar zxvf ../e2fsprogs-1.35.tar.gz# mv tmake-1.11 tmake# mv qt-2.3.7/ qt# mv qtopia-free-1.7.0 qtopia# mv e2fsprogs-1.35 e2fsprogs# cp x86-qtopia arm-qtopia -rf记住,用户目录下的x86-qtopia目录是PC机上编译的工作环境,arm-qtopia是arm平台的交叉编译工作环境,qt-x11是两者公用的。接下来还必须编译qt-x11,主要是为了编译生成其中的qtdesigner和qvfb。qvfb程序在系统中并未安装,需要我们自己编译。qtdesigner是和qt库的版本是相关的,当我们使用PC机上和QTE版本不符的qtdesigner时,可能在PC机上的qt-x11能使用的控件在QTE上并未实现,导致应用程序编译不成功。所以,我们使用2.3版本的QTE时,必须使用相同版本的qt-x11编译生成的qtdesigner和qvfb。# cd ~/qt-x11# export QTDIR=$PWD# echo yes | ./configure -static -no-xft -no-opengl -no-sm# make -C src/moc# cp src/moc/moc bin# make -C src# make -C tools/designer# make -C tools/qvfb# cp tools/qvfb/qvfb bin# strip bin/uic bin/moc bin/designer bin/qvfb# cp qt-x11/bin/* qt/bin -f# cp qt-x11/bin/* qt/bin -f3. PC平台编译编译之前做一下准备工作:打开一个控制台之后设置环境变量。# cd ~/x86-qtopia# export QTDIR=$PWD/qt# export QPEDIR=$PWD/qtopia# export TMAKEDIR=$PWD/tmake# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH3.1 编译QTE# cd $QTDIR# cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ -f# (echo yes ; echo no) | ./configure -platform linux-generic-g++ -qconfig qpe -depths 16,24,32# make -C src clean# make -C src看一下$QTDIR目录下是否已经有了qt的库了?3.2 编译QTOPIA# cd $QPEDIR/src# ./configure# make clean# make3.3 测试QTOPIA激动的时刻来了,如果这个步骤成功将意味着可以做应用开发了。# cd ~/x86-qtopia# mkdir dist# cd dist# cp -af ../qt/lib/ .# cp -af ../qtopia/apps .# cp -af ../qtopia/bin .# cp -af ../qtopia/plugins .# cp -af ../qtopia/i18n .# cp -af ../qtopia/pics .因为Security.png有点错误,所以必须进行一下操作:# cd pics# pngtopnm Security.png>a.pnm# pnmtopng a.pnm>Security.png因为qpe运行的时候,当前目录必须是$QTDIR/bin,所以不能在$QTDIR目录下执行bin/qpe来运行。# export QTDIR=~/x86-qtopia/qt# cd $QTDIR/bin# ./qvfb &# ./qpe &看到qpe在qvfb中的界面了吗?我看到了~!4. 目标平台交叉编译与PC机上的编译一样,打开一个控制台之后需要设置环境变量。# cd ~/arm-qtopia# export QTDIR=$PWD/qt# export QPEDIR=$PWD/qtopia# export TMAKEDIR=$PWD/tmake# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH4.1 交叉编译QT4.2 交叉编译QTOPIA5. 移植QT中的相关设备接口5.1 鼠标5.2 触摸屏6. 移植QTOPIA中的相关设备接口6.1 电源管理设备7. 编写QT程序并移植8. 编写QTOPIA程序并移植X. tips@ 移植的时候编译器的版本很重要.qte-2.3.7在redhat9的3.2编译器下工作很正常,但在Fedora4的gcc-3.4.2编译器下编译却不成功.根据测试,PC平台上使用gcc-3.2可以顺利编译,arm平台上使用gcc-2.95.2可以顺利通过(gnuarm的编译器好像不行,用华恒光盘中的armv4l-unkown-linux-gcc的可以编译通过)@ 编译过程中会提示缺少uuid的头文件和库,下载e2fsprogs-libs-1.38.tar.gz,里面有uuid的相关代码.@ 编译的时候需要指定编译器,在qt的configs目录下有许多文件,修改linux-arm-g++-*这些文件中的相关定义.例如:默认使用arm-linux-gcc编译器,而我使用的是GNUARM的arm-elf-gcc编译器,替换文件中所有arm-linux-前缀为arm-elf-即可.

❸ arm嵌入式linux qt入门问题请教

1、qt-x11是建立在X11图开库上的,X11图形库又是建军在FRAMBUFFER上的,FRAMBUFFER是linux内核的图形库,X11系统资源需求大,不能用于嵌入式,所以qt-embedded产生了,它不是建立在X11图形库上的,它是直接建立在FRAMBUFFER上的,占系统资源极少,可以在嵌入式上使用。qtopia-core这个概念是相对于qtopia提出的。它就是qt-embedded。而qtopia是QT公司的一个嵌入式桌面系统,目前已停止开发了。2、如果arm上没有qt库,不能运行QT程序,必须把相应的QT库按装到ARM板上。3、qmake产生makefile,make根据makefile调用gcc进行编译。4、qt-embedded-linux-opensource-src-4.4.3.tar.gz是用在嵌入式上的QT开发库。用法与qt-4.4.3-x11版的用法一样。5、没有办法仿真,只能先进行qt-embedded的移植工作。但是开发qt-embedded程序时,到是可以在PC机上先用qvfb仿真调试的。6、qt-embedded库先交叉编译,完成后下载到开发板上,以后开发应用程序时,qt库不用再下载的。7、写qt程序需要4.0版以上的交叉编译器。网上可以下载现成。8、这是三个不同版本的gcc交叉编译器,都老了。目前至少应该使用gcc 4.0以上的。9、肯定是不行的。10、呵呵,我也是从新手过来的。也问过类似的小白问题。

❹ 高分悬赏:请大虾帮助我建立qtopia(嵌入式QT)开发环境

我看了一下你的开发包的版本,都是好多年前的东西了,据我个人经验,这些开发包安装起来的确很费时费事,安装过程中要么缺这个库要么缺那个库,确实不好弄。个人建议你去安装qt-embedded4.5.0左右的吧。安装这个版本比较新,安装过程也会相对简单。另外要分清楚你的目标程序在哪里运行。编译出来的东西放到开发板上还是pc上运行。下面说一下我的个人如何建立嵌入式QT的开发环境下载这个软件包,和tslib,先交叉编译tslib(后面安装会用到)./configure-xplatformqws/linux-arm-g++-embeddedarm-shared-little-endian-qt-kbd-usb-qt-mouse-tslib-qt-libpng-qt-libjpeg-qt-gif-depths4,8,16,32-confirm-license-prefix/usr/local/Trolltech/Qtopia-4.3.3-arm-I/home/su/qtopia-core-opensource-src-4.3.3/tslib/include-L/home/su/qtopia-core-opensource-src-4.3.3/tslib/lib-I后接tslib交叉编译出来的include目录-L后接lib目录(类似上面)这是我安装qtopia-opensource-4.3.3forarm的配置选项。使用arm-linux-gcc的3.4.1版本。接着make然后是makeinstall最后会安装在/usr/local/Trolltech/Qtopia-4.3.3-arm上述是针对arm版本的安装方法。如果觉得不够详细的话,还可以看看:http://..com/question/103574669.html

❺ 嵌入式Qt版本的选择

qtopia马上就淘汰来了,4.4~4.7都是过度版本自很少应用在项目上,4.8是比较多应用的,而且支持qt quick(需要编译时候配置中enable)目前qt到达5.1版,马上出5.2版,支持在安卓和苹果使用。但是5.0以后并没试验出嵌入式功能,估计还没有嵌入式支持。所以建议采用digia的4.8.5。我在等5.2后的嵌入式,尝试下quick 2.0的嵌入式体现。

❻ linux下arm-qtopia编译qt程序时,出现error:'QProgressDialog' was not declared in this scope

把你的代码传上来看看,只看错误信息是找不到原因的!

❼ qt安装什么版本的用于嵌入式ARM板。。跪求高手。。

现在学习板上面的大部分都是qtopia2.2.0 qtopia1.7.0之类的,这样的编译环境都是命令行,非常不方便,当然大部分linux上的程序都是这样编译的,,,建议你用QTcreator配合QT4.5这种集成开发环境,用起来十分容易

❽ 哪里有X86-Qtopia.tgz与ARM-Qtopia.tgz下载地址

友善之臂官网 更新部分里面有啊

❾ 编译x86-Qtopia-2.2.0错误.求教大神

先说明一下几个QT的区别:从Qt4.1开始,Qt/Embedded改名为Qtopia Core,又从Qt4.4.1开始,Qtopia Core又改名为Qt for Embedded Linux。我们通常所说的 Qt 都是指的用于 Linux/Unix 的 Qt/X11,真正意义上Qt 是泛指 Qt 的所有版本的图像界面库,比如 Qt/X11,Qt Windows, Qt Mac 等。Qt/Embeded 的概念:它是用于嵌入式 Linux 系统的 Qt 版本,Qt/Embeded 也简称 Qte 或 Qt/EQte 去掉了 X Lib 的依赖而直接工作在 Framebuffer 上,虽然它是 Qt 的嵌入式版本,但是它不是 Qt/X11 的子集,它有部分机制(比如 QCOP 等)就不能用于 Qt/X11 中。Qtopia 是一个基于 Qte 的类似桌面系统的应用环境,包含有 PDA 版本和 Phone 版本。实质上 Qtopia Core 还是基础类库,相当于 Qte。最近 Qtopia Core 改名了,新名字叫做:qt-embeded-linux-xxxxxx。以下的内容结合《基于 SKY2440/TQ2440 的 Qt/Embeded 应用程序开发完全手册》编译 PC 版本的 Qtopia-2.2.01、准备编译器知道你的ubuntu10.04默认安装的是gcc4.4,现在我们要使用gcc3.4#apt-get install gcc-3.4安装后/usr/bin下就多出了gcc-3.4,原先这里有个gcc,它是指向gcc-4.4的软链接,现在我们要让它指向gcc-3.4#rm gcc#ln -s /usr/bin/gcc-3.4 /usr/bin/gcc测试一下$gcc -v注意:在编译PC版本的qt4.5时我们又需要把gcc的版本从3.4升到4.42、解压包#tar xvfj Qte_20110601.tar.bz2 -C /在“Linux 资源\Linux 平台开发工具包\”里面?arm-qtopia-2.2.0_build:将 qtopia-2.2.0.tar.bz2 源码编译成 ARM 版本,并且编译 tslib-1.4.1.tar.bz2 源码和 EmbedSky_apps.tar.bz2 源码。? arm-qtiopia-2.2.0-konqueror_build:在 arm-qtopia-2.2.0_build 的基础上增加了 konqueror.tar.bz2 的 编 译 。? setARM_QpeEnv:设置 ARM 版本的环境变量的脚本。? setX86_QpeEnv:设置 X86 版本的环境变量的脚本。? x86-qtopia-2.2.0_build:将 qtopia-2.2.20tar.bz2 源码编成 PC 版本。? x86-qtopia-2.2.0-konqeror_build:在 x86-qtopia-2.2.0_build 的基础上增加了 konqueror.tar.bz2 的编译。? EmbedSky_apps.tar.bz2:后面几个章节讲到的应用程序的源码合集(Makefile 文件基于 ARM 的,可以利用该源码包自行生成 x86 版本的 Makefile 文 件 )。? konqueror.tar.bz2:Web 浏览器的源码。? qtopia-2.2.0.tar.bz2:qtopia-2.2.0 的源码。? test_x86:当 PC 版本的 Qtopia-2.2.0 编译成功后,仿真时运行该脚本。? tslib-1.4.1.tar.bz2:触摸校正的源码3、#./x86-qtopia-2.2.0-kongqueror_build这一步会发生很多错误,下面几步来修正。以下内容参照 和 4、修改几处代码源文件修改x86-qtopia-2.2.0/qt2/src/tools/qmemoryfile_unix.cpp 143行将if (!f)f = ::pen(tmpFile.latin1(), O_CREAT | O_WRONLY); 修改为if (!f)f = ::pen(tmpFile.latin1(), O_CREAT | O_WRONLY, 0666);修改x86-qtopia-2.2.0/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp 141行将if (!f)f = ::pen(tmpFile.latin1(), O_CREAT | O_WRONLY); 修改为if (!f)f = ::pen(tmpFile.latin1(), O_CREAT | O_WRONLY, 0666); 修改/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia/backend/vobject.cpp:419行char *dot = strrchr(g,'.');为char *dot = (char*)strrchr(g,'.');修正/x86-qtopia-2.2.0/qtopia/src/plugins/codecs/wavplugin/wavplugin.cpp:435行char *ext = strrchr( path.latin1(), '.' );改为char *ext = (char*)strrchr( path.latin1(), '.' );修改x86-qtopia-2.2.0-konqueror_biuld的第26行,把. setQpeEnv改为./setQpeEnv5、安装一些包# sudo apt-get install libx11-dev x11proto-xext-dev libqt3-mt-dev uuid-dev6、手动设置环境变量,然后执行脚本#source ./x86-qtopia-2.2.0/setQpeEnv#./x86-qtopia-2.2.0-kongqueror_build7、PC 仿真 Qtopia-2.2.0#./test_x86编译 ARM 版本的 Qtopia-2.2.01、准备交叉编译器#tar xvfj EABI_4.3.3_EmbedSky_20091210.tar.bz2 -C /然后新的交叉编译器就在/opt/EmedSky/4.3.3/bin下面,把这个路径放到/etc/environment中,source一下#which arm-linux-gcc;确保当前的交叉编译器就是/opt/EmedSky/4.3.3/bin下的那个,因为你之前可能装过其他版本的交叉编译器,并且把它的路径也放到了PATH中,并且还在/opt/EmedSky/4.3.3/bin在前面,那就不对了。2、#./arm-qtopia-2.2.0-kongqueror_build这一步过程中会有一些错误,下面几步来修正3、 修改arm-qtopia-2.2.0/qt2/src/tools/qmemoryfile_unix.cpp 143行将if (!f)f = ::pen(tmpFile.latin1(), O_CREAT | O_WRONLY); 修改为if (!f)f = ::pen(tmpFile.latin1(), O_CREAT | O_WRONLY, 0666);4、手动设置环境变量,然后执行脚本# source ./arm-qtopia-2.2.0/setQpeEnv#./arm-qtopia-2.2.0-kongqueror_build最后显示done!成功。至于2.3节所讲的制作包含 Qtopia-2.2.0 的文件系统工作就不需要做了天嵌制作好的文件系统里面已经包含了。开发第一个Qt程序依照天嵌资料第三章讲的去做。不过有三点需要注意(1)在main.cpp中印少了一个右括号(2)Makefile文件要改的地方不仅仅是红色标注的地方。红色标注的只是要添加的内容,还有一些地重复了,要删除。直接把资料上给的Makefile复制过来也有一些问题。如果是自己改注意最后一下文件项后面不能要“\",比如OBJECTS = first.o \main.omain.o后面就不能要“\"。(3)当编译好arm版本的first程序后,first、first.png、first.desktop是在资料所说的三个位置,但是“把三个文件放到开发板的相应位置”怎么理解呢?把first放到开发板的/opt/Qtopia/bin/ 下;first.png放到/opt/Qtopia/pics/下;first.desktop放到/Qtopia/apps/EmbedSky/下

❿ 如何在ubuntu12.04上安装qtopia-2.2.0-friendlyarm

1、首先进入管理员状态:sudo su这时进入管理员状态[email protected]:/opt/EmbedSky/Qte#,这个#代表是管理员。如果是在普通用户下是[email protected]:~$ ,是$,在普通用户下也会产生许多问题。2、进入管理员状态后的环境变量和普通用户是不一样的,可以echo $PATH看看。添加arm-linux-gcc的环境变量。export PATH=$PATH:/opt/EmbedSkye/4.3.3/bin3、可能出现的错误:首先下面这篇文章给了我极大的提示。http://bbs.embedsky.net/viewthread.php?tid=2773在编译x86-qtopia-2.2.0-konqueror_build时里面提到的两个编译错误都会碰到,当然有可能会碰到库不全的情况,错误会更多。至于哪些库我也记不清了。这是库已完全安装的情况下的产生的错误的解决办法。在编译天嵌公司的arm-qtopia-2.2.0-konqueror_build也会碰到类似的错误。解决方法一样。主要就是要更改qmemoryfile_unix.cpp里面的一个函数的参数。fPIC -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"qpe\" -DQTOPIA_TRTARGET=\"libqpe\" -DQT_NO_DEBUG -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/mkspecs/qws/linux-generic-g++ -I. -I../../../include/qtopia/private -I../../../pics/qpe -I../../../include -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include -I../../../include/qtopia/private/ -I.moc/release-shared/ -o .obj/release-shared/qmemoryfile_unix.o qmemoryfile_unix.cppqmemoryfile_unix.cpp: In member function ‘QMemoryFileData* QMemoryFile:openData(const QString&, int, uint)’:qmemoryfile_unix.cpp:149: warning: format not a string literal and no format argumentsqmemoryfile_unix.cpp:187: warning: format not a string literal and no format argumentsqmemoryfile_unix.cpp:232: warning: format not a string literal and no format argumentsIn file included from /usr/include/fcntl.h:217,from qmemoryfile_unix.cpp:48:In function ‘int open(const char*, int, …)’,inlined from ‘QMemoryFileData* QMemoryFile:openData(const QString&, int, uint)’ at qmemoryfile_unix.cpp:141:/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 argumentsmake[5]: *** [.obj/release-shared/qmemoryfile_unix.o] Error 1make[5]: Leaving directory `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia'解决办法:手动修改x86-qtopia-2.2.0/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp 141行将if (!f)f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY); 修改为if (!f)f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, 0666); make[5]: Entering directory `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia'g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -fPIC -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"qpe\" -DQTOPIA_TRTARGET=\"libqpe\" -DQT_NO_DEBUG -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/mkspecs/qws/linux-generic-g++ -I. -I../../../include/qtopia/private -I../../../pics/qpe -I../../../include -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include -I../../../include/qtopia/private/ -I.moc/release-shared/ -o .obj/release-shared/vobject.o backend/vobject.cppbackend/vobject.cpp: In function ‘VObject* addGroup(VObject*, const char*)’:backend/vobject.cpp:419: error: invalid conversion from ‘const char*’ to ‘char*’backend/vobject.cpp: In function ‘void writeEncString(OFile*, const char*, bool)’:backend/vobject.cpp:1111: warning: suggest parentheses around ‘&&’ within ‘||’backend/vobject.cpp: In function ‘bool includesUnprintable(VObject*, bool)’:backend/vobject.cpp:1168: warning: suggest parentheses around ‘&&’ within ‘||’backend/vobject.cpp:1169: warning: suggest parentheses around ‘&&’ within ‘||’make[5]: *** [.obj/release-shared/vobject.o] Error 1make[5]: Leaving directory `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia'解决方法:修改/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia/backend/vobject.cpp:419行char *dot = strrchr(g,'.');为char *dot = (char*)strrchr(g,'.');4、konqueror的编译上面是原作者的解决办法。能够成功编译,但是在编译konqueror时就会出现错误 setQpeEnv: not found。这是无法读取目录下的setQpeEnv脚本所致。首先天嵌的x86-qtopia-2.2.0-konqueror_build也没什么逻辑上的错误,但是无法读取确实很让人奇怪。解决办法:在终端的/opt/EmbedSky/Qte/目录下手动执行source ./x86-qtopia-2.2.0/setQpeEnv,再运行 ./x86-qtopia-2.2.0-konqueror_build,就成功编译了。上面的问题在编译./arm-qtopia-2.2.0-konqueror_build也会遇到,解决办法一样。


赞 (0)