




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QT完全手册 嵌入式工具Qt的安装与使用摘要Qt是Trolltech公司的一个产品。Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。Qt和 Qtopia分别是其中具有代表性的两个。(2004-05-05 10:52:14)-By lanf, 出处:/pub/article/c310_a71173_p1.html作者:胡利民 本文选自:开放系统世界Qt是Trolltech公司的一个产品。Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。Qt和Qtopia分别是其中具有代表性的两个。 Qt是一个多平台的C+图形用户界面应用程序框架,它能给用户提供精美的图形用户界面所需要的所有元素,而且它是基于一种面向对象的思想,所以用户对其对象的扩展是相当容易的,并且它还支持真正的组件编程。 Qt是Linux桌面环境KDE的基础。笔者认为,可以说Qt与Windows下的Mfc的实质是一样的,所以Qt最大的优点在于其跨平台性,可以支持现有的多种操作系统平台,主要有: MS/Windows 95、Windows 98、WindowsNT 4.0、Windows 2000、Windows XP; Unix/X11 Linux、Sun Solaris、HP-UX、Compaq True64Unix、IBM AIX、SGI IRIX和很多其它X11平台; Macintoshi Mac OSX; Embedded带FramBuffer的Linux平台。 下面简单介绍一下Qt/Embedded和Qtopia在Linux上的安装和使用,还有在开发过程中可能碰到的一些问题。 Qt 和Qtopia的安装如果需要安装一个带FramBuffer的Qtopia平台,需要有以下软件(所列举软件以笔者使用的为例): Qtopia 1.6.0; Tmake 1.11; Qt/Embedded 2.3.4(Qtopia 1.6.0是基于该开发平台上开发的); Qt/Embedded 2.3.2 for X11; Qt 3.1.2 for X11。 在Trolltech公司的网站上可以下载该公司所提供的Qt/Embedded的免费版本。 Qtopia平台安装分为以下几个步骤: 1. 解包Qtopia 在Linux命令模式下运行以下命令: tar xfz qtopia-source-1.6.0 (解包)cd qtopia-source-1.6.0export QPEDIR=$PWD (设置环境变量)cd.2. 安装Tmake 在Linux命令模式下运行以下命令:tar xfz tmake-1.11.tar.gzexport TMAKEDIR=$PWD/tmake-1.11export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g+export PATH=$TMAKEDIR/bin:$PATH3. 安装Qt/Embedded2.3.4 在Linux命令模式下运行以下命令:tar xfz qt-embedded-2.3.4-commercial.tar.gzcd qt-2.3.4export QTDIR=$PWDexport QTEDIR=$QTDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHcp $QPEDIR/src/qt/qconfig-qpe.h src/tools/. /configure -qconfig qpe -qvfb -depths 4,8,16,32make sub-srccd .也可以在configure的参数中添加systemjpeg和gif,使Qtopia平台能支持jpeg、gif格式的图形。 4. 安装Qt/X11 2.3.2 在Linux命令模式下运行以下命令:tar xfz qt-x11-2.3.2-commercial.tar.gzcd qt-2.3.2export QTDIR=$PWDexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH. /configure -no-openglmakemake -C tools/qvfbmv tools/qvfb/qvfb bincp bin/uic $QTEDIR/bincd .根据开发者本身的开发环境,也可以在configure的参数中添加别的参数,比如-no-opengl或-no-xfs,可以键入./configure -help来获得一些帮助信息。 5. 安装Qt/X11 3.1.2 在Linux命令模式下运行以下命令: tar xfz qt-x11-commercial-3.1.x.tar.gzcd qt-x11-commercial-3.1.xexport QTDIR=$PWDexport QT3DIR=$QTDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH./configure -threadmakecd .6. 安装Qtopia 在Linux命令模式下运行以下命令: cd qtopia-source-1.6.xexport QTDIR=$QTEDIRexport QPEDIR=$PWDexport PATH=$QPEDIR/bin:$PATHcd src./configuremakecd ./.7. 安装Qtopia桌面 cd qtopia-source-1.6.x/srcexport QTDIR=$QT3DIR./configure -qtopiadesktopmakemv qtopiadesktop/bin/qtopiadesktop ./bincd .Qt和Qt Designer的使用 根据上面的步骤安装完成了Qt/Embedded和Qtopia之后,就可以运行这些程序了。 运行Qt的虚拟仿真窗口:在Linux的图形模式下运行命令qvfb&;Qtopia只是一个用Qt/Embedded开发的程序,运行Qtopia,在图形模式下运行命令: export QTDIR=$QTEDIR,qpe &;这样Qtopia的程序就运行在QVFB上,即Qt的虚拟仿真窗口。 Qt/Embedded是针对嵌入式Linux而开发的一种开发工具,Qt封装了一些常用的类,而且这些类的名字都以Q字开头命名,如QString、QDialog等。这里主要介绍一下如何利用Qt Designer来设计组件,并生成相应的代码。 在Qt中,把组件分为复合体、原始体和配件。而在Qt中,组件是由一些抽象类、复杂的组件类、管理组件几何特性的类等组成。 Qt中有三个主要的基类:QObject、Qapplication和QWidget。 在Qt 中编程,利用Signal和Slot进行对象之间的通信是Qt的主要特征。它与Windows中的消息机制非常类似,但是Signal和Slot机制真正实现了一种消息的封装。当对象的状态改变时,发出Signal,通知所有的Slot接受Signal,尽管它不知道哪些函数是Slot,Slot一开始也不知道哪些Signal可以接收。Signal和Slot之间不是一一对应的关系,一个Signal可以发给多个Slot, Slot也可以接收多个Signal。Slot除了可以接收Signal以外,与其它的成员函数没有区别。这种机制比使用回调函数要灵活,但是会减慢程序的运行速度。不过在现在高速CPU的面前,这种损失是无足轻重的,而且它还能保证程序的简明性和灵活性,非常便利。 在Qt的组件中,不仅定义了常用的成员变量和成员函数,还定义了所有与该组件相关的Signal和Slot。 要将组件组合起来,最简单的方法就是使用Qt Designer。首先要启动Qt Designer,在Linux命令模式下,键入以下命令(假设Qt安装在/usr/local下): cd qt-2.3.2/bin./designer这样就可以启动一个与Windows下的Delphi相类似的如图1的界面。 然后新建一个QFrame,将自己需要的组件直接拖拉到这个Frame中,相信很多人都有过这样的经历,此处就不再详细描述了。完成之后存盘时,会将这个新的组件保存为一个扩展名为.ui的文件。假设所存的文件名为test.ui,用vi test.ui来查看这个文件,发现这是一个用xml语言写的一个文本。下面用这个test.ui生成相应的test.h和test.cpp。同样还是在这个目录下,可以看到一个uic的工具,这个是Qt专门用来将ui文件生成.h和.cpp文件的,在终端模式下键入以下命令: ./uic -o test.h test.ui./uic -o test.h -i test.cpp test.ui此时就能看到生成了相应test.h和test.cpp,这是一个类。当然这只是一些表面的东西,还需要在这些代码中添加相应的Signal和Slot,完成所需要的操作。值得注意的是,相应版本生成的ui最好用相应版本的uic来生成代码。如果用Qt 3.1.2的Designer生成的ui,用Qt 2.3.2的uic来生成代码,生成的代码都会是一些空函数。 在一般的开发过程中,首先通过这个ui生成的一个类,在Qt中通常叫做 Base,如上面的例子,叫做testBase;然后再新建一个类,来继承这个Base。通常叫做实现类Impl,如testImpl。在这个实现类里面定义所需要的成员函数、Signal和Slot,因为ui可能是经常需要改动的。如果这样做,每次只需要在Designer中修改ui,而不用去理会这些成员函数、Signal和Slot了。 编译一个Qt程序必然需要Makefile,在Qt中提供了一个专门生成Makefile的工具,就是tmake。用tmake需要根据编写的程序写一个.pro文件。.pro文件非常简单,有固定的格式,下面是一个例子: TEMPLATE = appCONFIG = qtopia warn_on releaseMOC_DIR =tmpOBJECTS_DIR =tmpHEADERS =fcrs.h structs.h globalfunc.h globalvars.h testimpl.hSOURCES = main.cpp globalfunc.cppglobalvars.cpp testimpl.cppINTERFACES = test.ui TARGET = fcrs生成这个.pro文件之后,在终端中键入下面的命令: tmake -o Makefile 就自动生成了一个Makefile,使用这个Makefile编译所编写的程序就可以了。Qt/Embedded开发环境建立的过程 -Qt/Embedded开发环境建立的过程:(这些软件可以免费从trolltech的WEB或FTP服务器上下载) tmake 1.11 或更高版本; (生成Qt/Embedded应用工程的Makefile文件) Qt/Embedded 2.3.7 (Qt/Embedded 安装包) Qt 2.3.2 for X11; (Qt的X11版的安装包, 它将产生x11开发环境所需要的两个工具)1、安装tmake在Linux 命令模式下运行以下命令:tar xfz tmake-1.11.tar.gzexport TMAKEDIR=$PWD/tmake-1.11export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g+export PATH=$TMAKEDIR/bin:$PATH2. 安装Qt/Embedded 2.3.7在Linux 命令模式下运行以下命令:tar xfz qt-embedded-2.3.7.tar.gzcd qt-2.3.7export QTDIR=$PWDexport QTEDIR=$QTDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH./configure -qconfig -qvfb -depths 4,8,16,32make sub-srccd .上述命令 ./configure -qconfig -qvfb -depths 4,8,16,32 指定Qt 嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持4,8,16,32 位的显示颜色深度。另外我们也可以在configure 的参数中添加systemjpeg 和gif,使Qt/Embedded 平台能支持jpeg、gif格式的图形。上述命令 make sub-src 指定按精简方式编译开发包,也就是说有些Qt 类未被编译。Qt 嵌入式开发包有5 种编译范围的选项,使用这些选项,可控制Qt 生成的库文件的大小,但是您的应用所使用到的一些Qt 类将可能因此在Qt 的库中找不到链接。编译选项的具体用法可运行./configure help 命令查看。3. 安装Qt/X11 2.3.2在Linux 命令模式下运行以下命令:tar xfz qt-x11-2.3.2.tar.gzcd qt-2.3.2export QTDIR=$PWDexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH./configure -no-openglmakemake -C tools/qvfbmv tools/qvfb/qvfb bincp bin/uic $QTEDIR/bincd .根据开发者本身的开发环境,也可以在configure 的参数中添加别的参数,比如-no-opengl 或-no-xfs,可以键入./configure -help 来获得一些帮助信息。如果Qt/Embedded 的应用是在UNIX 平台下开发的话,那么它就可以在开发的机器上以一个独立的控制台或者虚拟缓冲帧的方式来运行,对于后者来说,其实是有一个X11的应用程序虚拟了一个缓冲帧。通过指定显示设备的宽度,高度和颜色深度,虚拟出来的缓冲帧将和物理的显示设备在每个像素上保持一致。这样每次调试应用时开发人员就不用总是刷新嵌入式设备的FLASH 存储空间,从而加速了应用的编译、链接和运行周期。运行Qt 的虚拟缓冲帧工具的方法是:在Linux 的图形模式下运行命令:qvfb (回车)当Qt 嵌入式的应用程序要把显示结果输出到虚拟缓冲帧时,我们在命令行运行这个程序时,在程序名后加上-qws 的选项。例如: $ hello -qws 一,QT/E的安装。在本机中安装了包括QT4.0.1(WINDOWS版本)以及QT/E2。3。7(LINUX版本)。QT/E我安装在我的虚拟机中。因为QT/E2.3.7的版本问题,其适宜在REDHAT9。0版本(或更低版本)下安装,否则安装不成功。QT/E安装过程复杂,具体细节可以参考下面这篇文章。Qt/Embedded开发环境建立的过程此文在网上可搜索到。本机下虚拟机中QT/E安装路径为:/home/wangxl/QTE/qt-2.3.7QT/X11安装路径为:/home/wangxl/QTE/qt-2.3.2Tmake安装路径为:/home/wangxl/QTE/Tmake-1.8QT/E下载地址为:ftp:/ftp.rediris.es/mirror/Qt/source/Tmake下载地址为:/freebies/tmake/二QT与QT/E以及QT3与QT4之间的区别相对来说QT与QT/E的语法一样,所不同之处在库类大小或者库类函数大小不同而已。QT/E相对于QT来说,不具有少数类或者少数函数的支持。具体QT/E是否包含某个类或者包含某个类中的函数,我的方法是在QT/E安装目录下的include文件夹中去查找。QT3和QT4有很多不同点,主要不同也是在于库类以及支持函数有所变化,比如,有些QT3中的函数,在QT4中被其他函数名所代替,因此很多QT4程序在QT3环境下无法执行。QT/E2.3.7与QT3基本相同,除了我前面提到的QT与QT/E的差别。三QT/E编译与执行。1在QT/E编译与执行前要先设置TMAKE与QT/E LIB环境,具体方法如下:rootlocalhost tmake-1.8# export TMAKEDIR=$PWDrootlocalhost tmake-1.8# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g+rootlocalhost tmake-1.8# export PATH=$TMAKEDIR/bin:$PATHrootlocalhost qt-2.3.7# export QTDIR=$PWDrootlocalhost qt-2.3.7#export QTEDIR=$QTDIRrootlocalhost qt-2.3.7#export PATH=$QTDIR/bin:$PATHrootlocalhost qt-2.3.7#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH2如果你是用DESIGNER工具设计的界面(后面有讲),则要将*.ui文件转换成*.h文件和*.cpp文件。转换方法如下: uic o test.h test.uiuic o test.cpp i test.h test.ui3编写一个*.pro文件(用来生成Makefile文件用),该文件格式比较固定。如文件基本格式如下(以test.cpp ,test.h main.cpp为例子):EMPLATE = appCONFIG += qt warn_on releaseHEADERS = test.hSOURCES = test.cpp main.cppTARGET = helloDEPENDPATH=/home/wangxl/QTE/qt-2.3.7/includeREQUIRES=4生成Makefile文件方法为:tmake o Makefile 5 编译生成可执行文件make6 打开QVFB进入安装QT/X11所在目录, 在BIN目录下执行程序qvfb。有时候需要修改qvfb执行时的deptb参数才能够执行QT/E程序。可以直接在QVFB打开窗口的Configure彩单项中选择,也可以用如下命令执行QVFB。./qvfb width * -height * -depth *7.执行QT/E程序如 。/TEST 在QVFB程序打开的窗口中将出现TEST程序的显示 。四Qt/e与QT/X11安装QT/E的同时还需要安装QT/X11与Tmake,Tmake 是用来帮助生成Makefile文件的。安装QT/X11主要是向QT/E提供designer工具和qvfb工具的。Designer可以用来设计图形界面,最后生成.ui文件,可通过UIC命令转换为相应的C+文件。QVFB模拟帧缓冲,提供QT/E程序的显示平台。五QT/E 程序ARM 板上执行在我虚拟机上可以执行的QT/E程序不能在ARM板上执行,需要对QT/E进行重新编译,并需要设置响对于ARM板系统的编译环境,具体方法可以参考我另外的一文QT/E开发记录六QT/E支持中文显示问题QT/E需要字体转换才能显示中文。具体方法可以参考我另外的一文QT/E开发记录但是由于缺少UNICODE的QPF文件的字体,中文字大小不均匀问题尚没解决。七 QT/E的一些参考资料:/bbs/index.php QT中文论坛/qt/ (关于QT3的类,以及类函数可以在这寻找)提供QT3编程最好书籍的电子版本C+ GUI Programming with QT 3(本机)关于QT4可以参考QT ASSISTNAT(本机中),另外QT ASSISTNAT中也可以查找QT3的类及库等。设置Qtopia的build环境1、环境变量在目标系统上build Qtopia必须设定必要的环境变量,如QTDIR, 如果依赖多个版本的Qt,则需要用环境变量指向用到的库配置。一种方法是将环境变量的设定写入文件,通过运行source命令应用文件的内容。举例说明:Linux/bash下建立环境变量设定文件qtopia.sh, 内容如下:export QPEDIR=/opt/Qtopiaexport QTDIR=/opt/Qtopiaexport PATH=$QTDIR/bin:$PATHexport TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-generic-g+export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH需要时运行 source qtopia.sh即可应用以上环境变量。另外也可以通过在.bashrc文件中设定别名来应用这些环境变量。 假设环境变量设置文件存放在home目录的bin下, 则可在.bashrc中加入:alias qtopia=source /bin/qtopia.sh2、创建自定义的配置文件整个Qtopia系统在build过程中需要三个独立的配置系统:1) Qt/Embedded 配置文件2) tmake - 用于build Qtopia 1.x和一些第三方软件3) qmake - 用于build Qtopia 2及以上版本在build Qtopia以前,先要完成以上三项的配置。下面是创建一个“myarm”配置的例子:cp -r $TMAKEDIR/lib/qws/linux-arm-g+ $TMAKEDIR/lib/qws/linux-myarm-g+cp -r $QTEDIR/configs/linux-arm-g+-shared $QTEDIR/configs/linux-myarm-g+-sharedcp -r $QPEDIR/mkspecs/qws/linux-arm-g+ $QPEDIR/mkspecs/qws/linux-myarm-g+Qt/Embedded编辑$QTEDIR/configs/linux-myarm-g+-shared, 修改其中的utilities和flags成适合系统的内容, 如: 可能需要修改SYSCONF_CXX, SYSCONF_CC 和SYSCONF_LINK, 指定正确的编译器. 可能需要增加编译选项-DMYARM,在代码中增加宏#ifdef MYARM(用以增加设备相关的代码)tmake编辑$TMAKEDIR/lib/qws/linux-myarm-g+/tmake.conf,修改用到的utilites和flags: 可能需要修改TMAKE_CC, TMAKE_CXX 和TMAKE_LINK可能需要增加-DMYARM选项qmake修改$QPEDIR/mkspecs/qws/linux-myarm-g+/qmake.conf: QMAKE_CC, QMAKE_CXX 和QMAKE_LINK -DMYARM注意:qmake.conf的最后一行必须是:exists($(QPEDIR)/src/config.pri):include($(QPEDIR)/src/config.pri)可用于目录名的字符正则表达式字符Qtopia 1.9.x和Qtopia 2.0.0 - 2.1.0对字符有以下的要求:Qtopia build系统访问到的任何目录都不能包含正则表达式字符任何能被QRegExp识别的特殊字符和字符序列都可能引起问题.字符只匹配自身不要将正则表达式字符用于目录名,包括(但不仅限于): + . ? * () $ 注:Qtopia 2.1.0和2.1.1及以上版本可以通过应用patch解除以上的限制空格Qtopia build系统不支持目录名中包含空格。必须保证:build系统访问到的目录不包含空格访问目录的各层上级目录也不包含空格Qtopia的依赖和必要条件简介为了使Qtopia正确运行, 必须满足以下的必要条件:安装适当的编译/交叉编译工具Qt/Embedded-2.3.11Linux kernel提供共享内存、mmap和socket支持Linux支持frame bufferLinux支持OSS声音或支持与OSS兼容的ALSA声音。 进一步的信息参考 The Qtopia A/V & Appearance FAQ 还需要以下的库:Video4Linuxzliblibuuid(aka luuid)libjpegxorg 或X11注:Freetype不是必须的但建议支持 /index2.html 支持的编译器和交叉编译器 gcc-2.95.2 gcc 3.2.4 gcc-3.3.0, gcc-3.3.3, gcc-3.3.4 gcc-3.4.1 声音Qtopia需要/dev/dsp可写,并支持以下的ioctl操作:SNDCTL_DSP_SETFRAGMENT - Qtopia将这个值设置为0x4000c. SNDCTL_DSP_SETFM - Qtopia设置为AFMT_S16_LE SNDCTL_DSP_STEREO - Qtopia 设置为 1/true. SNDCTL_DSP_SPEED - Qtopia设置为44100. SNDCTL_DSP_GETOSPACE Qtopia 还需要/dev/dsp可以以阻塞方式和非阻塞方式打开。 以上的设定是Qtopia需要的设定,但可以容许少许的偏差,但如果不设定成Qtopia需要的值则不能保证音频能平滑播放。 假如您的设备只支持22500的播放速率,则在调用SNDCTL_DSP_SPEED时要报告此速率,以免造成音频质量的缺损。 不过,如果系统不支持GETOSPACE,非阻塞写入或 SNDCTL_DSP_SET_FRAGMENT, 几乎可以肯定必然会损失音频质量。Video4LinuxCamera应用程序需要支持Video4Linux v1的内核, Qtopia没有提供该支持。请参考官方的 Video for Linux 资源站点,参看API的详细内容。zlibzlib可以从 /zlib/ 下载libuuid(aka luuid)Qtopia不提供uuid支持。 这个库可以从 / 站点下载另外, 如果你有SuSE Linux的发行版, e2fsprogs-devel这个包可以提供uuid支持; 在Debian中对应的包是uuid-dev. 这个库应该放在标准路经下/usr/lib/libuuid.so请用包管理工具来查看该包是否已经安装:rpm -qa | grep e2fsprogs如果尚未安装,请从安装盘或镜像站安装这个包。需要注意的是,如果没有安装e2fsprogs-devel,在链接时会发生下面的错误:/usr/lib/gcc-lib/i586-suse-Linux/3.3.3/././././i586-suse-linux/bin/ld:cannot find -luuid如果安装了该库仍遇到上述错误,则检查Qtopia的configure脚本的-L和-R参数, 以确定脚本包含了库的实际路径。 关于交叉编译的信息可参考 System Integrators Guide. libjpegQtopia不提供jpeg库。 Qtopia需要Qt/Embedded配置为支持jpeg。libjpeg库可从 / 下载此外,如果你有SuSE发行版, libjpeg这个包可提供该库。 这个库应该安装在标准路经/usr/lib/libjpeg.so检查libjpeg包是否已经安装:rpm -qa | grep libjpeg如果未安装,请从安装盘或镜像站安装。关于libjpeg交叉编译的信息, 可参考System Integrators Guide. xorg或X11开发包括有从以下站点下载: / 相关讨论决定开始Qtopia需要的步骤, 参考: Getting started 将Qtopia集成到特定设备上的重点步骤, 参考: System Integrators guide Qtopia的FAQs,参看: Qtopia index page 系统是完全安装RedHat9.0(里面带QT3.1),板子是X-Hyper250B的,Toolchain用的是开发板带的hybus-arm-linux-R1.1 交叉编译所用到的文件: qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qtopia-free-source-2.1.1.tar.gz tmake-1.13.tar.gz e2fsprogs-1.35.tar.gz 主机x86的编译步骤: tar xfz qt-embedded-2.3.10-free.tar.gz(解压后qt-2.3.10改名为qt-2.3.10-host) export QTEDIR=$PWD/qt-2.3.10-host tar xfz qt-x11-2.3.2.tar.gz(解压后qt-2.3.2) export QT2DIR=$PWD/qt-2.3.2 tar xfz qtopia-free-source-2.1.1.tar.gz(解压后qtopia-free-2.1.1改名为qtopia-2.1.1-host) export QPEDIR=$PWD/qtopia-2.1.1-host tar xfz tmake-1.13.tar.gz(解压后tmake-1.13) export TMAKEDIR=$PWD/tmake-1.13 export TMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-x86-g+ export PATH=$TMAKEDIR/bin:$PATH cd qt-2.3.2 export QTDIR=$QT2DIR export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH ./configure -no-xft make make -C tools/qvfb cd . cd qt-2.3.10-host export QTDIR=$PWD export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH mkdir bin (因为解压后的qt-2.3.10没有bin文件夹) cp $QT2DIR/bin/uic bin cp $QT2DIR/tools/qvfb/qvfb bin cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ ./configure -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32 make cd . tar xzf e2fsprogs-1.35.tar.gz cd e2fsprogs-1.35 ./configure -enable-elf-shlibs make install lib/uuid/ 注:这是编译x86的libuuid库 cd . cd qtopia-2.1.1-host export PATH=$QPEDIR/bin:$PATH export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH ./configure make 编译例子: $qmake -project =我都是这样创建.pro文件的 $tmake -o Makefile $make $qvfb & $./hello -qws 或者$qpe 还没怎么仔细研究过。 目标机arm-linux的编译步骤: tar xfz qt-embedded-2.3.10-free.tar.gz(解压后qt-2.3.10改名为qt-2.3.10-target) export QTEDIR=$PWD/qt-2.3.10-target tar xfz qt-x11-2.3.2.tar.gz export QT2DIR=$PWD/qt-2.3.2 tar xfz qtopia-free-source-2.1.1.tar.gz(解压后qtopia-free-2.1.1改名为qtopia-2.1.1-target) export QPEDIR=$PWD/qtopia-2.1.1-target tar xfz tmake-1.13.tar.gz export TMAKEDIR=$PWD/tmake-1.13 export TMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-arm-g+ export PATH=$TMAKEDIR/bin:$PATH cd qt-2.3.2 export QTDIR=$QT2DIR export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH ./configure -no-xft make make -C tools/qvfb cd . cd qt-2.3.10-target export QTDIR=$PWD export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH mkdir bin cp $QT2DIR/bin/uic bin cp $QT2DIR/tools/qvfb/qvfb bin cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ ./configure -xplatform linux-arm-g+ -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32 make cd . 注:这里需要arm版本的libjpeg.so.62,hybus-arm-linux-R1.1里面包含这个库;如没有可以上网下载。 tar xzf e2fsprogs-1.35.tar.gz cd e2fsprogs-1.35 ./configure -host=arm-linux -with-cc=arm-linux-gcc -with-linker=arm-linux-ld -enable-elf-shlibs -prefix=/usr/local/hybus-arm-linux-R1.1/arm-linux make install lib/uuid/ =这步安装到hybus-arm-linux-R1.1/lib上的libuuid.so.1.2版本不对, 要cp lib/libuuid.so.1.2 ./hybus-arm-linux-R1.1/lib 注:这步是交叉编译arm的libuuid库,配置详情见./configure -help (还要多谢 /?p=20 这里面的大哥呀,好不容易才在网上找到的) cd . cd qtopia-2.1.1-host export PATH=$QPEDIR/bin:$PATH export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH cp src/libraries/qtopia/custom-linux-ipaq-g+.cpp src/libraries/qtopia/custom-linux-arm-g+.cpp cp src/libraries/qtopia/custom-linux-ipaq-g+.h src/libraries/qtopia/custom-linux-arm-g+.h ./configure -xplatform linux-arm-g+ make 注:这里需要libstdc+.so和libgcc_s.so库develop环境下qt中文化程序设计 原文出处:Linux公社 原文作者:yfy001 kdevelop是一款在linux平台下可以同windows环境下的vc相媲美的集成开发环境,qt则是一款支持包括windows和linux平台 的GUI库,可以说它是linux下的MFC.在显示上,qt使用Unicode作为内部编码,可以支持多种编码.如何使用qt进行国际化编程 在网上可以找到很多资料的,但都是针对较早版本的qt进行介绍的.qt3.0.5中对这些作了些改动,这些方法就相应的要做些改动. 而且在kdevelop中开发qt应用程序,将会事半功倍.我的开发环境为redhat8.0(需安装kde开发工具包). 首先在linux中打开kdevelop集成开发环境,用它的应用程序向导新建一个qt的SDI的应用程序框架.这个同windows下vc很类似.它 将会为你自动生成版本号,作者,e-mail等信息的单文档对话框的应用程序框架.我们首先对它自动生成的程序进行汉化(qt1是 我的项目名称). 1.汉化自动生成的程序 添加翻译文件 在项目菜单中选择添加新的翻译文件,语言选择zh_CN.Gb2312.将会创建一个zh_CN.GB2312字符编码的翻译文件.扩展名 为.ts.在qt3.0.5环境下,打开*.ts翻译文件的工具是linguist.你可以在工具菜单中选择QT linguist来打开,在linguist菜单中选择file-open打开所要翻译的翻译文件.此时可以在linguist窗口中的source text中 的文本就是你所要翻译的文本,选择所要翻译的文本,在下方有一个类似一页纸一样的地方,在translate下输入翻译后的文本. 所示. 翻译完这些文件后,编译运行,在我们的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光伏发电系统故障诊断与维护技术光伏组件热斑故障分析考核试卷
- 冷冻饮品生产环境中的空气质量管理考核试卷
- 海鲜养殖面试题及答案
- 船舶辐射考试题及答案
- 防震减灾面试题及答案
- 三一技师考试试题及答案
- 老房改造测试题及答案
- 湖南省长沙市岳麓实验中学2024-2025学年高一下学期6月月考数学试卷
- 2025届上海市风华中学高二化学第二学期期末学业质量监测试题含解析
- 数据分析基础(第2版)课件 第4.2 描述性统计
- 工业机器人讲课件
- 筛网维护使用管理制度
- 专科护士基地管理制度
- 二年级下二升三数学暑假作业(人教)
- 期末达标测试卷(含答案)2024-2025学年人教版七年级数学下册
- 云南省昆明市2023-2024学年高二下学期期末质量检测数学试题(解析版)
- 2025年苏教版四年级(下)期末考试数学试卷(含答案)
- 早期肿瘤筛查
- 农业托管经营协议书
- 肿瘤内科病案质量管理
- 2025年高考语文备考之考纲规定实词200文言实词课内出处注解汇编
评论
0/150
提交评论