已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Qt/Embedded在嵌入式linux下的开发环境建立及移植摘要:本文主要介绍了在嵌入式linux系统下QT/Embedded开发环境建立及移植。通过大量源代码及分析,建立起在linux主机和s3c2410下的Qt/开发环境,再对QT/E程序进行移植。关键词:Qt/Embedded;嵌入式;linux 引言Qt/Embedded是奇趣科技推出的基于Linux的嵌入式平台开发工具,是Qt的嵌入式版本。它继承了Qt的全部标准API,提供了比Xlib和XWindows系统更加紧凑的窗口生成系统,对FrameBuffer直接进行操作(见图1)。完全模块化的设计和高效的编译系统减少了内存的消耗,这些使Qt/Embedded成为嵌入式环境中,功能强大而全面的GUI开发工具。由于KDE等项目均使用Qt作为支持库,所以许多基于Qt的X Windows程序可以非常方便地移植到Qt/Embedded版本上。Qt/Embedded具有面向对象、跨平台和界面设计方便美观等优点,已得到了广泛的应用。本文主要通过大量的源代码,建立起linux主机和s3c2410下的QT/Embedded开发环境,并指出其移植方法。1前期准备本文所用到的宿主机操作系统为RED HAT 9.0,目标平台为三星公司的S3c2410。需要准备的软件包如下:1)jpegsrc.v6b.tar.gz 安装libjpeg库,因为配置Qt/E支持jpeg时需要jpeglib.h、 libjpeg.a、libjpeg.so这三个文件;2)e2fsprogs.1.35.tar.gz -安装libuuid库,因为交叉编译时需要用到此库;3)qt-embedded-free-3.3.5.tar.gz -编写嵌入式图形界面所需的软件包;4)qt-x11-3.3.4.tar.gz -编写嵌入式图形界面所需的软件包。2Qt/E开发环境的建立21 Jpeg6b的安装与配置Jpeg6b的安装和配置比较简单,过程如下:#cd /usr/src#tar xzvf jpegsrc.v6b.tar.gz /解压#cd jpeg-6b#./configure enable-shared enable-static/配置,既生成静态又生成共享库文件#make#cd /usr/local#mkdir man /注意建立man和man1文件夹#cd man #mkdir man1#cd /usr/src/jpeg-6b#make install /编译并安装完成后会在/usr/include目录下生成jpeglib.h,在/usr/local/lib目录下会生成libjpeg.a和libjpeg.so两个库文件,如果没有则说明安装不成功。22安装并交叉编译arm的libuuid库#cd /usr/src#tar xvzf 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/arm/2.95.3/arm-linux/配置生成基于ARM平台的libuuid库文件#make install /编译并安装#cd lib#cp dR libuuid.* /usr/local/arm/2.95.3/arm-linux/lib/将生成的库文件拷到ARM交叉编译工具链所在的lib目录。将交叉编译后生成的libuuid库拷到arm的交叉编译工具链目录中时应注意检查生成的libuuid.so、libuuid.so.1、libuuid.so.1.2是不是arm交叉编译完成的(file libuudi.so.1.2 如果显示为:ELF 32-bit LSB Sshared,ARM,Version1(ARM),not stripped则表示正确)。23安装Qt/X11#cd /usr/local#tar xvfz qt-x11-free-3.3.4.tar.gz#mv qt-x11-free-3.3.4 qtx#cd qtx#export QTDIR=$PWD /设置环境变量,在编译的时候要用到#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib#./configure -depths 4,8,16 -no-ipv6 -no-cups -no-pch qvfb -depths 4,8,16,32 /配置,可以通过./configure -help来获得帮助信息#make /编译#make install24 安装Qt/Embedded编译并安装Qt/Embedded主要是为了生成基于ARM内核的Qt/E库文件,将这些库文件移植到ARM平台中就可以运行通过QT开发出来的GUI程序了,下面列出其安装步骤:#cd /usr/local#tar xvzf qt-embedded-free-3.3.5.tar.gz#mv qt-embedded-free-3.3.5 qte#cd qte#export QTDIR=$PWD /设置环境变量#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY_PATH接着拷贝jpeg库头文件到Qt/E的include中,因为在编译的时候要用到:#cp /usr/include/jpeglib.h $QTDIR/include/#cp /usr/include/jconfig.h $QTDIR/include/#cp /usr/include/jerror.h $QTDIR/include/#cp /usr/include/jmorecfg.h $QTDIR/include/#cp /usr/local/qtx/bin/uic $QTDIR/bin/#./configure -shared -embedded arm -qt-gif -no-exceptions -thread -no-nis -no-cups -no-stl -qt-imgfmt-mng -qt-imgfmt-png -qt-imgfmt-jpeg -qt-sql-sqlite -qvfb -depths 4,8,16,32#make /编译,最终生成基于ARM平台的Qt/E库文件:libqte-mt.so、libqte-mt.so.3、libqte-mt.so.3.3、libqte-mt.so.3.3.5到此,整个Qt/Embedded的开发环境全部建立起来了。3.Qt/Embedded在硬件平台上的移植Qt/E移植主要是将交叉编译Qt/E时生成的库文件移植到目标板的文件系统中:#cd /home/root /root为我们存放文件系统的目录#mkdir qt#cd qt#mkdir lib#mkdir bin#cp -dR $QTEDIR/lib/libqte-mt.* ./ /将编译Qt/E生成的库文件拷到lib目录中,在这里主要是用到lib中的4个文件:libqte-mt.so、libqte-mt.so.3、libqte-mt.so.3.3、libqte-mt.so.3.3.5最后我们通过NFS将生成的文件系统加载到硬件目标平台上。4开发流程整个开发环境建立起来后,开发流程如下:1)先在宿主机调用QTX下的designer工具,建立工程文件,编写程序并调试(例如建立)2)确认程序无误后,调用QTE下的qmake对工程文件进行交叉编译/usr/local/qte/bin/qmake ;make;3)把交叉编译生成的二进制执行文件放到目标板的文件系统中cp hello /home/root/qt/bin4)在目标板上运行#export QTDIR=/qt#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY_PATHHello qws5总结本文主要讲述了Qt/Embedded开发环境的建立和移植,本文主要介绍了在嵌入式linux系统下QT/Embedded开发环境建立及移植。通过大量源代码及分析,建立起在linux主机和s3c2410下的Qt/E开发环境,再对Qt/E程序进行移植,文章最后还指出QT程序的开发流程。参考文献1Blanchette J.C+GU I Programming wit h Qt 3Z.TrolltechAS.2004.2Trolltech.Qt Reference documentation version 31314Z.2004.3刘泽建,嵌入式水文信息采集智能终端的研究与设计,广东工业大学学位论文M.2003摘 要:QT是一个用于多种平台图形界面程序开发的C+工具包。同时QT还包含了一些工具使得编写程序变得又快又直接。QT的跨平台能力和国际化支持保证了QT应用程序占有尽可能广阔的市场。Qt/Embedded是面向嵌入式系统的QT版本。主要讲述Qt/Embedded库中基于ARM的嵌入式Linux系统下的移植,同时使用一个简单的应用程序来说明Qt/Embedded应用程序的开发流程。关键词:QT;Qt/Embedded;交叉编译;ARM QT是Trolltech公司开发的一个多平台的C+图形用户界面应用程序框架。Qt采用了完全面向对象组件编程技术,支持多平台。Qt提供图形用户界面在嵌入式系统上开发的一系列开发工具包。该图形系统最大的优点是采用面向对象设计,移植性好,基于X Window的Qt桌面应用程序可以非常方便的移植到嵌入式系统上。 Qt/Embedded是在嵌入式环境下所使用的Qt。目前市面上所有上市的Linux PDA都是采用Qt/Embedded作为图形接口的函数库。Qt/Embedded的特性是可以直接在Framebuffer上显示图形接口,反应的速度更快,这对硬件和容量都有限制的嵌入式环境非常重要。 主要介绍QT在基于ARM的嵌入式Linux系统下的移植与应用。1 Qt/Embedded开发环境介绍 Qt/Embedded应用程序的开发可以在安装了一个跨平台开发工具链的不同的平台上编译。系统采用的是在Linux平台下开发,在Linux平台下以虚拟缓冲帧的方式来运行,其实是有一个X11的应用程序虚拟了一个缓冲帧。通过指定显示设备的宽度、高度和颜色深度,虚拟出来的缓冲帧将和物理的显示设备在每个像素上保持一致。这样每次调试应用时开发人员就不用总是刷新嵌入式设备的FLASH 存储空间,从而加速了应用的编译、链接和运行周期。 运行Qt 的虚拟缓冲帧工具的方法是:在Linux 的图形模式下运行命令:qvfb(回车) 当Qt 嵌入式的应用程序要把显示结果输出到虚拟缓冲帧时,我们在命令行运行这个程序时,在程序名后加上-qws的选项。例如:$hello-qws Qt包含了许多支持嵌入式系统开发的工具,其中一些工具我们会在别的地方介绍。最实用的工具(除了上面我们提到的虚拟缓冲帧)有 tmake、Qt designer(图形设计器)、uic和moc。(1)tmake tmake 是一个为编译Qt/Embedded 库和应用而提供的Makefile 生成器。它能够根据一个工程文件(.pro)产生不同平台下的Makefile 文件。开发者可以使用Qt 图形设计器可视化地设计对话框而不需编写一行代码。使用Qt图形设计器的布局管理可以生成具有平滑改变尺寸的对话框,tmake 和Qt 图形设计器是完全集成在一起的。(2)Qt designer Qt Designer是设计窗口组件(Widget)的应用程序,在安装Qt的bin目录下输入./designer命令,就启动一个包含很多Qt组件的可视化界面。在此组织应用程序的各组建分布很方便,最后生成一个file.ui和main.cpp文件;file.ui是用XML语言编写的一个文本。(3)uic(user interface compiler) uic是从XML文件生成代码的用户界面编译器,用来将file.ui文件生成file.h和file.cpp文件(命令如:uic -o file.h file.ui uic -o file.cpp file.ui),但生成的这两个文件不是标准的纯C+代码,通常称为Qt的C+扩展,因为Qt的对象间运用了信号和插槽的通信机制,在文件中用Q_OBJECT宏来标识。(4)moc(元对象编译器) moc用来解析一个C+文件中的类声明并且生成初始化对象的C+代码,moc在读取C+源文件,如果发现其中一个或多个类的声明中含有Q_OBJECT宏,就给出这个使用Q_OBJECT宏的类生成另外一个包含元对象代码的C+元文件;元对象代码对信号插槽机制、运行时的类型信息和动态属性系统是需要的。2 Qt/Embedded库的移植 2.1 Qt/Embedded开发环境的安装1 一般来说,嵌入式应用程序都是先在装有Linux操作系统的PC机或工作站来完成Qt/Embedded的开发,然后再把应用程序交叉编译后发布到嵌入式Linux系统下。在一台装有Linux操作系统的机器上建立Qt/Embedded开发环境,需要三个软件安装包:tmake工具安装包,Qt/Embedded安装包,Qt的X11版安装包。 由于上述软件安装包有许多不同版本,要注意版本不同可能导致的冲突。Qt for X11安装包的版本要比Qt/Embedded的版本旧。因为Qt for X11安装包的两个工具uic和designer产生的源文件会和Qt/Embedded的库一起被编译链接,本着“向前兼容”的原则,Qt for X11的版本应比Qt/Embedded的版本旧。本系统采用的是tmake 1.11;Qt/Embedded 2.3.7;Qt 2.3.2 for X11。 2.1.1安装tmake在Linux命令模式下运行以下命令:#tar xfz tmake-1.11.tar.gz#export TMAKEDIR=$PWD/tmake-1.11#export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g+#export PATH=$TMAKEDIR/bin:$PATH 2.1.2安装Qt/Embedded 2.3.7在Linux命令模式下运行以下命令:#tar xfz qt-embedded-2.3.7.tar.gz#cd qt-2.3.7#export QTDIR=$PWD#export QTEDIR=$QTDIR#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH#./configure -qconfig -qvfb -depths 4,8,16,32#make sub-src上述命令./configure-qconfig-qvfb-depths 4,8,16,32指定Qt嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持4,8,16,32位的显示颜色深度。另外我们也可以在configure的参数中添加-system-jpeg和gif,使Qt/Embedded平台能够支持jpeg、gif格式的图形。 2.1.3安装Qt/X11 2.3.2在Linux命令模式下运行以下命令:#tar xfz qt-x11-2.3.2.tar.gz#cd qt-2.3.2#export QTDIR=$PWD#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH#./configure -no-opengl#make#make -C tools/qvfb#make tools/qvfb/qvfb bin#cp bin/uic $QTEDIR/bin根据开发者本身的开发环境,可以在configure的参数中添加别的参数,比如,-no-opengl或-no-xfs,可以通过输入./configure-help来获得一些帮助信息。 2.2交叉编译Qt/Embedded的库2-3Qt/Embedded应用程序最终是要在嵌入式Linux系统下运行,所以要把Qt嵌入式应用程序编译成支持在开发板上运行的目标代码之前,需要两样东西,一是基于目标板的交叉编译器,另一个是交叉编译后的Qt/Embedded库。 2.2.1安装交叉编译工具交叉编译是指一个处理器平台上编译产生一个工程代码的另一个处理器的目标代码。通过下载并修改toolchain作为交叉编译工具,要求最好使用cross-3.3.2及其以后的版本,这样才能对Qt/Embedded有良好支持。 2.2.2交叉编译Qt/Embedded库 当有了ARM的linux编译器后,就可以使用这个编译器进行交叉编译Qt/Embedded库的源代码,从而产生一个以ARM为目标代码的Qt/Embedded库。具体过程如下:(1)解压Qt/Embedded在Linux命令模式下运行如下命令:#tar xfz qt-embedded-2.3.7.tar.gz(2)配置Qt/Embedded的安装#cd qt-2.3.7#export QTDIR=$PWD#export QTEDIR=$QTDIR#.cp /配置文件所在路径/qconfig-local.h ./src/tools#make clean#./configure -xplatform linux-arm-g+ -shared -debug -qconfig local -qvfb -depths 4,8,16,32#makeQt/Embedded的安装选项有很多个,可以直接输入“”来运行配置。Qt/Embedded的安装选项还允许自己定制一个配置文件,来有选择的编译Qt/Embedded库,这个安装选项是“-qconfig local”;当指定这个选项时,Qt/Embedded库中安装过程会寻找qt-2.3.7/src/tools/qconfig-local.h这个文件来编译链接Qt/Embedded库。在定制中添加了对触摸屏显示的支持。 2.3 Qt/Embedded支持触摸屏显示45 Qt/Embedded 2.x系列中,触摸屏设备和键盘设备需要根据具体的驱动程序接口中Qt/Embedded中设备实现对应的设备操作类。其中对应于鼠标类设备的实现位于src/kernel/qwsmouse_qws.cpp中。在文件qwsmouse_qws.cpp中添加对触摸屏的支持。具体修改如下:(1)定义和Linux内核文件driver/input/tsdev.c中数据结构ts_event相一致的TS_EVENT数据结构,定义如下:#if defined(QT_QWS_IPAQ)typedef struct short pressure; short x; short y; short millisecs; TS_EVENT;(2)修改校准文件的位置在函数void QCalibratedMouseHandler:writeCalibration()和void QCalibratedMouseHandler:readCalibration()中修改如下:Qstring calFile = “/tmp/pointercal”;(3)对打开的设备文件进行修改在函数QTPanelHandlerPrivate:QTPanelHandlerPrivate中,修改如下:mouseFD=open(“/dev/input/ts0”,O_RDONLY | O_NDELAY);(4)由于内核TS_EVENT结构中,当触摸屏按下时对pressure的设置为1,因此在void QTPanelHandlerPrivate:readMouseData()函数中把if(data-pressure=QT_QWS_TP_PRESSURE_THRESHOLD)修改为:if(data-pressure) 2.4移植Qt/Embedded库在ARM板的根文件系统的tmp目录下创建新目录qt,在qt目录下创建新目录lib。把交叉编译后生成的Qt/Embedded库拷贝到ARM板上的根文件系统下的/tmp/qt/lib目录下。在使用QT库之前要设置环境变量。命令如下:#export QTDIR=/tmp/qt#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH这样Qt/Embedded应用程序就可以在ARM板上移植了。3 Qt/Embedded应用程序的开发开发一个Qt应用程序的流程如下6: 3.1生成一个工程文件(.pro文件) 一个应用通常对应一个工程文件,生成一个工程文件,并对它做一些简单的编辑,然后使用一个专门的工具(例如tmake)处理这个工程文件,就可以生成一个Makefile文件。 产生一个工程文件的其中一个方法是使用progen命令(progen程序可以在tmake的安装路径下找到)。下面是使用progen产生一个名为hello的工程文件的命令:progen -t app.t -o 产生的工程文件并不完整,开发者还需手动往里添加工程所包含的头文件,源文件等信息。 3.2新建一个窗体 在qt-2.3.2的安装路径的bin目录下运行“./designer”命令,就启动了一个Qt图形编辑器。点击编辑器的“new”菜单,弹出了一个“new Form”对话框,在这个对话框里我们选择“Widget”,然后点击“OK”按钮,这样我们就新建了一个窗体。接着,我们可以对这个窗体进行设置。 设置完成后,将其保存为hello.ui文件,这个文件就是project窗体的界面存储文件。 3.3生成窗体类的头文件和实现文件 界面文件使用uic工具产生出窗体类的头文件和实现文件,例如hello.ui节目文件产生hello窗体类的头文件和实现文件,具体方法如下:#cd qt-2.3.7/bin#uic -o hello.h hello.ui#uic -o hello.cpp -impl hello.h hello.ui这样我们就得到hello窗体类的头文件hello.h和实现文件hello.cpp。接下来根据我们要实现的具体功能,在hello.cpp文件里添加相应的代码。 3.4编写主函数main() 一个Qt/Embedded应用程序应该包含一个主函数,主函数所在的文件名是main.cpp。主函数是应用程序执行的入口点。 3.5编辑工程文件 在工程文件中添加窗体类的头文件、实现文件和主函数文件。 3.6生成Makefile文件 编译器是根据Makefile文件内容来进行编译的,所以需要生成Makefile文件。Qt提供的tmake工具可以帮助我们从一个工程文件(.pro文件)中产生Makefile文件。从工程文件生成一个Makefile文件的具体做法如下: 把环境变量$TMAKEPATH所指的目录设置为arm编译器的配置目录,把当前QTDIR环境变量指向Qt/Embedded的安装路径,这样就可以使用tmake来生成Makefile文件。#export TMAKEPATH=/tmake安装路径/qws/linux-arm-g+#export QTDIR=/qt-2.3.7#tmake -o Makefile 当前目录生成的Makefile文件,需要进行一些修改,具体修改如下:将LINK = arm-linux-gcc 改为LINK = arm-linux-g+ 3.7编译链接整个工程在命令行下输入make命令对整个工程进行编译链接。#make这样make生成的二进制文件就可以在ARM上允许了。4 实验结果 实现了简单的qt应用程序,主要有按钮和标签,点击按钮display就会在标签上显示“Hello World!”,点击按钮clear就会清空标签。应用程序首先在pc上调试通过后,再重新交叉编译后移植到ARM板上。下图是该qt应用程序在pc上运行的结果。Ubuntu 9.10+qt-embedded-linux-opensource-src-4.5.0+tslib-1.4.1+gcc-4.3.3+gcc-4.1移植经验日期:2010-04-20 来源:Linux社区 作者:wenes 基于Ubuntu9.10+qt-embedded-linux-opensource-src-4.5.0+tslib-1.4.1+gcc-4.3.3+gcc-4.1目标平台:TQ2440(s3c2440)+LCD w3.5-2(东华)+kernel:+QT4.5 【Qtopia-2.2.0】 Nand Flash:256MB+Nor Flash:2MB+SDRAM:64MBS3C2440-ARMV4T(哈佛)-ARM920T-ARM9/etc/profile文件内:export PATH=/media/_home/opt/4.3.3/bin:$PATH 【arm-linux-gcc-4.3.3】export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1:$PATH命令:ln -s /usr/bin/make /usr/bin/gmake Ubuntu 9.10source /etc/profilesudo apt-get install gcc-4.1 ? m4 autoconf automake libtool tar -vxjf qt-embedded-linux-opensource-src-4.5.0_20091216 -C /media/_home/opt/EmbedSky/qt-4.5tar -vxjf tslib-1.4.1.tar.bz2 -C /media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0编译 tslib-1.4.1:cd /media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1./build或者./configure -host=arm-linux -disable-hp3600 -disable-arctic2 -disable-mk712 -disable-collie -disable-corgi -disable-ucb1x00 -disable-linear-h2200 -with-gnu-ld -prefix=$PWD/_install ac_cv_func_malloc_0_nonnull=yesmake & make install编译qt-embedded-linux-opensource-src-4.5.0:【ARM】/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/qws/linux-arm-g+/qmake.conf文件内:# qmake configuration for building with arm-linux-g+#include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/g+.conf)include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/linux.conf)include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/qws.conf)# modifications to g+.confQMAKE_CC = /media/_home/opt/4.3.3/bin/arm-linux-gccQMAKE_CXX = /media/_home/opt/4.3.3/bin/arm-linux-g+QMAKE_LINK = /media/_home/opt/4.3.3/bin/arm-linux-g+QMAKE_LINK_SHLIB = /media/_home/opt/4.3.3/bin/arm-linux-g+# modifications to linux.confQMAKE_AR = /media/_home/opt/4.3.3/bin/arm-linux-ar cqsQMAKE_OBJCOPY = /media/_home/opt/4.3.3/bin/arm-linux-objcopyQMAKE_STRIP = /media/_home/opt/4.3.3/bin/arm-linux-stripQMAKE_INCDIR = export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/include:$PATHQMAKE_LIBDIR = export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/lib:$PATHload(qt_config)命令:cd /media/_home/opt/EmbedSky/qt-4.5./arm_qt4.5_build 要修改或者:cd ./qt-embedded-linux-opensource-src-4.5.0./configure -prefix /media/_home/opt/EmbedSky/qt-4.5/_install/arm/ -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g+ -embedded arm -little-endian -qt-freetype -depths 16 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -armfpa -qt-mouse-tslib -I/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/include -L/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/libgmakegmake install编译qt-embedded-linux-opensource-src-4.5.0:【X86】cd /media/_home/opt/EmbedSky/qt-4.5./x86_qt4.5_build 要修改或者:cd ./qt-embedded-linux-opensource-src-4.5.0./configure -prefix /media/_home/opt/EmbedSky/qt-4.5/_install/x86/ -release -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -nomake demos -nomake examples -silentgmakegmake install程序运行:-X86上命令 第一步运行qvfb后【先安装】第二步运行./myapp -qws Sun VirtualBox内linux 外windows XP共享文件夹工具上部菜单栏:设备(D)-分配数据空间(S)- 【+】添加数据空间 -数据空间位置 D:share-linux ; 数据空间名称 share_linux -固定分配 -确定内: #sudo mount -t vboxsf share_linux /mnt/sharearm下NFS挂载开发板进入uboot下载模式(超级终端下)输入命令0-1-3(PC的IP-linux虚拟机的IP)-(开发板linux的IP)-(开发板掩码)-/media/_home/root_nfs(PC的linux的NFS文件系统路径)-s(保存)-q(退出)-重启开发板条件:网线通,串口通,开发板的uboot和linux-kernel有,PC的linux的NFS文件系统有,开发板的yaffs文件系统可以没有。mount t nfs 3:/media/_home/root_nfs /mnt/rootwd o nolock转载相关gcc版本问题bug:用新立得软件包管理器安装gcc-4.1(自带的gcc4.3.2无法编译成功!但不用卸载),然后$ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (gcc只是一个soft link,回头再链回到gcc-4.3就可以了)如果不安装gcc-4.1,就会出现2个问题: /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 arguments编译到这里的时候提示这个错误,是因为没有第三个参数,gcc 4.3.2严格的语法检查不让通过;你可以修改 gcc-/gcc/collect2.c的1575行附近,加上第三个参数0777,变成 =#c60a00 style=BACKGROUND-COLOR:transparentredir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777); 然后就可以继续编译 尽管可以继续编译,但是还会出现这个问题:* buffer overflow detected *: mipsel-9tdmi-linux-gnu-ar terminated哈,编译出来的这个程序根本就有问题!所以还是老老实实地安装gcc 4.1吧!编译gcc-3.3.6的时候,出现以下错误: /usr/include/bits/fcntl2.h:51: error: call to _open_missing_mode declared with attribute error: open with O_CREAT in second argumentneeds 3 arguments这纯属软件bug,因为使用open函数的时候,如果在第二个参数中使用了O_CREAT,就必须添加第三个参数:创建文件时赋予的初始权限.而在gcc-3.3.6/gcc/的collect2.c文件中有漏掉第三个参数的错误,而gcc-4.3对语法错误的检查严格是出了名的(4.1就不会因此错误退出),所以就退出了.这也是可以解决的,就是在gcc-3.3.6/gcc/collect2.c中的第1575行改为: redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777不懂:如果,你不想重新编译Qt-Embedded,也可以单独编译qvfb的gfxdrivers,命令如下 $ 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本篇文章来源于 Linux公社网站() 原文链接:/Linux/2010-04/25563p2.htm本篇文章来源于 Linux公社网站() 原文链接:/Linux/2010-04/25563.htmQT给嵌入式Linux安装图形驱动加速器日期:2011-06-15 来源:Linux社区 作者:Linux 在QT嵌入式Linux版本中,painting是一个纯软件实现,分两步:首先,每个窗口使用QPaintEngine在QWSWindowSurface画图,然后,服务器程序将内存中内容写入显示器中。嵌入式Linux版本QT使用QRasterPaintEngine来实现painting操作,利用QScreen来实现window composition为了实现加速,嵌入式版本进行如下操作: 1、建立定制显示屏2、实现定制Raster Paint Engine3、让Paint Device检测到Paint Engine4、让Window Surface检测到你的Paint Device5、建立自己的Window Surface步骤1:从QScreen类继承建立定制的screen重新实现connect() disconnect initDevice() shutdownDevice()函数,这些函数的作用为配置硬件或者获得硬件配置。connect()和disconnect()函数在server和client程序中都调用,而initDevice()和shutdownDevice()函数只在server中调用一般还需要重新实现blit()函数和solidFill()函数步骤2:继承QRasterPaintEngine类实现画图操作重新实现自己需要的,不需要的不实现步骤3:继承QCustomRasterPaintDevice类重新实现paintEngine()函数,此函数返回paint engine的指针。另外重新实现QCustomRasterPaintDevice:memory()函数,此函数返回用于painting的缓存空间指针没有Memory Buffer的加速一般QRasterPaintEngine在memory b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疫情期间停业合同范本
- 羊肉代销合同协议书
- 食品行业市场前景及投资研究报告:天猫国际食品趋势
- 资金入股工厂协议书
- 石子加工合伙协议书
- 出轨协议书模板模板
- 股权个人协议书范本
- 连锁合伙人合同协议书
- 设计提成合作合同范本
- 消防主机售卖合同范本
- 2025年学前教育专升本真题汇编(含答案)
- 2025内蒙古呼和浩特航天经济开发区管理委员会市场化选聘国有企业总经理副总经理2人笔试历年参考题库附带答案详解
- 2025四川成都交易集团有限公司招聘10人笔试历年参考题库附带答案详解
- 社区艾灸活动策划方案
- 医学实习基地建设可行性分析报告
- 化工防静电安全知识培训
- 【《南京文化旅游资源的开发现状、问题及发展建议》8000字(论文)】
- 2025江苏徐州市泉山国有资产投资经营有限公司招聘笔试题库及答案详解
- 混凝土裂缝控制技术
- 鸿蒙崛起:探索新一代技术 课件 第6章-UI界面设计
- 《抖音运营策略》课件
评论
0/150
提交评论