资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
Qtopia for arm编译一、相关工具以及软件包: Cross-compiler Toolchains 提供arm交叉编译工具 e2fsprogs-1.35.tar.gz 用于编译生成libuuid库 tmake-1.11.tar.gz 生成makefile tslib.tar.bz2 触摸屏库 qt-embedded-2.3.7.tar.gz Qt/Embedded qt-x11-2.3.2.tar.gz Qt/X11,提供uic,qvfb(不必) qtopia-free-1.7.0.tar.gz Qtopia将这些工具和软件包保存到/qte_arm/目录,并解压缩。注意Toolchains已保存到/opt/xscalev1/bin。二、安装tmake: tmake用于交叉编译生成qt应用程序的makefile, 也可用于生成qt的本地makefile,区别在于设置TMAKEPATH路径的不同,一个用于arm,一个用于x86。 注意:tmake机器上本来就有,但是需要1.11以上版本,可用tmake v查看版本信息。# cd /qte_arm# tar xvfz tmake-1.11.tar.gz# vi tmake-1.11/lib/qws/linux-arm-g+/tmake.conf TMAKE_LINK=arm-linux-g+ /将原来的arm-linux-gcc改成arm-linux-g+ TMAKE_LINK_SHLIBS=arm-linux-g+ (不知道为什么要改,也不知道不改行不行)设置tmake环境变量:# export PATH=/qte_arm/tmake-1.11/bin:$PATH# export TMAKEDIR=/qte_arm/tmake-1.11# export TMAKEPATH=/qte_arm/tmake-1.11/lib/qws/linux-arm-g+另:由于qtopia编译过程很繁琐而且一般不能一次通过,所以也可将环境变量的设置写成脚本,脚本中也要写export。若脚本名为setenviroment,执行时应为:source setenviroment三、安装e2fsprogs:为arm编译libuuid库。# cd e2fsprogs# ./configure enable-elf-shlibs build=i386-linux host=arm-linux with-cc=/opt/xscalev1/bin/arm-linux-gcc with-linker=/opt/xscalev1/bin/arm-linux-ld# make 其中lib目录下的libuuid.so.1.2、libuuid.so.1、libuuid.so即是我们要编译的库,必须检查是否出现以及相应格式,否则说明编译不成功。四、编译触摸屏共享库tslib: Qt/Embedded只支持鼠标和键盘的操作,但在大部分嵌入式系统中利用触摸屏,所以用户必须对触摸屏的相关操作编译成共享库或静态库。1. 解压实验光盘提供的tslib.tar.bz2文件;2. 编译触摸屏库;3. 将触摸屏相关的头文件复制到qte-2.3.7/include文件夹中;4. 将编译好的触摸屏库文件复制qte-2.3.7/lib文件夹中;rootqte_arm#tar -jxf tslib.tar.bz2rootqte_arm#cd tslibrootqte_arm#export CC=arm-linux-gccrootqte_arm#./autogen.shrootqte_arm#./configure -host=arm-linuxrootqte_arm#makerootqte_arm#cp -a src/.libs/* /qte_arm/qte-2.3.7/lib/rootqte_arm#cp -a plugins/.libs/*.so /qte_arm/qte-2.3.7/lib/rootqte_arm#cp -f src/*.h /qte_arm/qte-2.3.7/include/5. 修改qte-2.3.7交叉编译环境参数文件使其增加对触摸屏的支持; 用vi编辑/qte_arm/qte-2.3.7/configs/linux-arm-g+-shared文件,将SYSCONF_LIBS = -lm 修改为SYSCONF_LIBS = -lm lts,然后保存修改后的文件。在编译qte-2.3.7源代码过程中使用触摸屏共享库。五、安装Qt/Embedded: Qt/E已经解压到/qte_arm/qte-2.3.7,Qtopia解压到/qte_arm/qtopia-1.7.0。 准备:修改qte-2.3.7鼠标操作源代码src/kernel/qwsmouse_qws.cpp 虽然qte-2.3.7支持鼠标操作,但是源代码src/kernel/qwsmouse_qws.cpp中读取鼠标数据函数readMouseData()读取的数据与开发板的触摸屏设备驱动输出的数据不匹配,所以用户必须修改读取鼠标数据函数readMouseData()。# cp /emdoor/Emeddoorv1.3/Qt/patch/qt_patch/qt-2.3.7-arm/src/kernel/qwsmouse_qws.cpp 到相应目录下。# cd /qte_arm/qte-2.3.7# export QPEDIR=./qtopia-1.7.0# export QTDIR=$PWD# export PATH=$PWD/bin:$PATH# export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH# cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/# ./configure qconfig qpe xplatform linux-arm-g+ -shared no-xft选择支持16depths色彩,不使用qvfb。实际上选择qvfb也无妨。# make如果编译成功,系统输出:The Qt library is now built in ./lib The Qt examples are built in the directories in ./examples The Qt tutorials are built in the directories in ./tutorialEnjoy! - the Trolltech team 编译生成的共享库libqte.so.2.3.7即是我们需要的qte库,保存在Qt目录的/lib文件夹中,通过查看/lib文件夹的文件可以确认编译是否成功。#cd $QTDIR/lib#lslibqte.so libqte.so.2 libqte.so.2.3 libqte.so.2.3.7利用file命令确认生成的共享库是否适合目标平台即ARM平台的二进制目标文件。#file libqte.so.2.3.7libqte.so.2.3.7:ELF 32-bit LSB shared object,ARM,version 1(ARM),not stripped注意:有人说要编辑src下的Makefile,add -DQWS_CUSTOMTOUCHPANEL into QT_CXXFLAGS_OPT,然后make sub-src。暂时未明。六、安装Qt/X11: 编译qt-x11-2.3.2是为了得到uic和qvfb,uic在编译qtopia时要用到,因此要用gcc/g+编译,而不要用arm-linux-gcc/g+编译。Qvfb则用于在没有帧缓冲结构的x86处理器系统和X窗口环境下,模拟出虚拟的帧缓冲,以便用于在PC上进行qtopia应用开发时的仿真。 实际上RedHat 9.0系统中已经装有QT,但是编译qtopia时不能使用比其自身更高版本的uic。 # cd /qte_arm/qt-2.3.2 # export QTDIR=$PWD # export PATH=$PWD/bin:$PATH # export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH # ./configure no-xft # make # make C tools/qvfb 或者# cd tools/qvfb # make # cp tools/qvfb/qvfb bin /将上一步生成的可执行文件qvfb拷到bin目录下。 /# cp bin/uic $QPEDIR/bin /这一行不用。 # cp bin/uic $QTEDIR/bin七、Build Qtopia: # cp /qte_arm/e2fsprogs/lib/libuuid.so* /opt/xscalev1/lib# cp /qte_arm/e2fsprogs/lib/libuuid.so* /opt/xscalev1/arm-linux/lib /这里将libuuid.so*拷到交叉编译工具的通用库中。实际上没有必要随便改动公用库,因为在建立x86下的Qtopia环境时也要用到相同名字的库,但是针对的处理器结构不同,用file命令可以查看。这是由于在编译e2fsprogs使用的配置参数不一样。或者:# export LD_LIBRARY_PATH=/qte_arm/qtopia-1.7.0/lib:$LD_LIBRARY_PATH # cp /qte_arm/e2fsprogs/lib/uuid/libuuid.a /qte_arm/qtopia-1.7.0/lib /这样做时copy的必须是libuuid.a文件,然后在编译qtopia时会利用libuuid.a生成libuuid.so*,这样得到的libuuid.so*才是可用的。 # cp av /qte_arm/e2fsprogs/lib/uuid /qte_arm/qtopia-1.7.0/include # export QTDIR=$QTEDIR # export PATH=$PWD/bin:$PATH # export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH # cd src # ./configure xplatfor
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号