QTEmbedded338初步交叉编译_第1页
QTEmbedded338初步交叉编译_第2页
QTEmbedded338初步交叉编译_第3页
QTEmbedded338初步交叉编译_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、QT/Embedded3.3.8初步交叉编译的完全整理 beasept发布于 2007-9-09 | 4071 次阅读   字号: 大 中 小  (网 友评论 2 条) 我要评论 作 者:爱尔兰异教徒交叉编译环境:HOST操作系统:Linux-2.6.15-1.2054_FC5GCC版本4.1.0TARGET:mx31开发板(freescale-ARM11平台)交叉编译工具链:arm-none-linux-gnueabi(mx31开发板所提供) gcc-4.1.1Qt/E版本:qt-embedded-fr

2、ee-3.3.8(ps:HOST上已经编译过qt-embedded-free-3.3.8gcc 4.1.0)下面的过程是在HOSTPC上已经正确的安装了qt-embedded-free-3.3.8上进行的:交叉编译的详细步骤:第一步:下载qt-embedded-free-3.3.8并解压缩到自定义的目录下。我的目录是tar jxvf qt-embedded-free-3.3.8.tar.bz2自动生成 /root/qt/qt-embedded-free-3.3.8(注意:记得将你在HOST编译好的QT/E的目录下的bin文件里的moc和uic二进制文件copy到我们交叉编译的目录下的bin文件

3、夹里就是 /root/qt/qt-embedded-free-3.3.8)第二步:安装交叉编译工具链这一步取决于你所使用的交叉编译工具链,我的是arm-none-linux-gnueabi(freescale的mx31开发板所提供)安装完成后bin的目录是:/opt/freescale/usr/local/gcc-4.1.1-glibc-2.4-nptl-6/arm-none-linux-gnueabi/bin第三步:配置qmake(即指定交叉编译工具)在mkspecs/qws/下建立arm-none-linux-gnueabi目录cd /root/qt/qt-embedded-free-3.

4、3.8cd mkspecs/qws/mkdir arm-none-linux-gnueabi把mkspecs/qws/linux-arm-g+下的qmake.conf和qplatformdefs.h复制到mkspecs/qws /arm-none-linux-gnueabi目录下然后修改qmake.conf文件,把文件里面的编译器指定为arm-none-linux-gnueabi用arm-none-linux-gnueabi-gcc和arm-none-linux-gnueabi-g+替代以下的arm-linux-gcc 和arm-linux-g+QMAKE_CC = arm-linux-gcc

5、QMAKE_CXX = arm-linux-g+QMAKE_LINK = arm-linux-g+QMAKE_LINK_SHLIB = arm-linux-g+第四步:环境变量的设置export QTEDIR=/root/qt/qt-embedded-free-3.3.8export QTDIR=$QTEDIRexport PATH=/opt/freescale/usr/local/gcc-4.1.1-glibc-2.4-nptl-6/arm-none-linux-gnueabi/bin:$PATHexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PA

6、TH=$QTDIR/lib:$LD_LIBRARY_PATH第五步:config./configure -xplatform qws/arm-none-linux-gnueabi -no-cups -no-stl -no-qvfb -depths 4,8,16,32 -qt-gif -embedded arm -disable-sql注意:在configure的时候会出现一个警告WARNING: Failure to find: .moc/release-static-mt-emb-x86/allmoc.cpp关于这个问题官方已经给出答案,引用如下This is not a problem.

7、It happens everytime Qt/embedded is configured.所以,这个警告可以不预理会。第六步:make 或者是 make sub-srcmake/make sub-src注意:make的时候由于对于qt3的交叉编译工具的gcc版本问题而导致提示如下错误:./include/qstring.h: In member function 'ushort& QChar:unicode()':./include/qstring.h:199: error: cannot bind packed field '(QChar*)this)-&

8、gt;QChar:ucs' to 'ushort&'解决办法:打开src/tools/qglobal.h查看318-326行:# if (defined(_arm_) | defined(_ARMEL_) && !defined(QT_MOC_CPP)# define Q_PACKED _attribute_ (packed)# if _GNUC_ = 3 && _GNUC_MINOR_ >= 4# define Q_NO_PACKED_REFERENCE# endif# endif# if !defined(_EXCEPT

9、IONS)# define Q_NO_EXCEPTIONS# endif修改如下:# if (defined(_arm_) | defined(_ARMEL_) && !defined(QT_MOC_CPP)# define Q_PACKED _attribute_ (packed)# if _GNUC_ = 3 && _GNUC_MINOR_ >= 4# define Q_NO_PACKED_REFERENCE# endif+# if _GNUC_ = 4 && _GNUC_MINOR_ >= 0+# define Q_NO_PAC

10、KED_POINTERS+# endif# endif# if !defined(_EXCEPTIONS)# define Q_NO_EXCEPTIONS# endif打开src/include/qstring.h查看195-199行ushort unicode() const return ucs; #ifdef Q_NO_PACKED_REFERENCEushort &unicode() return *(&ucs); #elseushort &unicode() return ucs; #endif修改如下:ushort unicode() const retur

11、n ucs; #ifdef Q_NO_PACKED_REFERENCEushort &unicode() return *(&ucs); +#elif defined Q_NO_PACKED_POINTERS+ ushort &unicode() ushort& tmp = ucs; return tmp; #elseushort &unicode() return ucs; #endifps:+号表示修改的地方接下来就是make cleanmake 第七步 strip交叉编译成功后在/lib文件夹下生成以下文件:libqte-mt.solibqte-m

12、t.so.3 libqte-mt.so.3.3 libqte-mt.so.3.3.8rootlocalhost lib# ls -llrwxrwxrwx 1 root root 18 09-05 17:25 libqte-mt.so -> libqte-mt.so.3.3.8lrwxrwxrwx 1 root root 18 09-05 17:25 libqte-mt.so.3 -> libqte-mt.so.3.3.8lrwxrwxrwx 1 root root 18 09-05 17:25 libqte-mt.so.3.3 -> libqte-mt.so.3.3.8-rw

13、xr-xr-x 1 root root 7091636 09-07 08:51 libqte-mt.so.3.3.8我们先来查看文件信息:rootlocalhost lib# file libqte-mt.so.3.3.8libqte-mt.so.3.3.8: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), not stripped此时显示的是not stripped,即没有经过strip。rootlocalhost lib# arm-none-linux-gnueabi-strip libqte-mt.so.3.3.8执行strip命令之后我们再次查看文件信息:rootlocalhost lib# file libqte-mt.so.3.3.8 libqte-mt.so.3.3.8: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), stripped此时显示的是stripped,即已经strip。你会发现,strip之后libqte-mt.so.3.3.8发生明显变化的,不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论