2022年QTEmbedded..初步交叉编译 .pdf

上传人:Che****ry 文档编号:27267708 上传时间:2022-07-23 格式:PDF 页数:4 大小:43.81KB
返回 下载 相关 举报
2022年QTEmbedded..初步交叉编译 .pdf_第1页
第1页 / 共4页
2022年QTEmbedded..初步交叉编译 .pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《2022年QTEmbedded..初步交叉编译 .pdf》由会员分享,可在线阅读,更多相关《2022年QTEmbedded..初步交叉编译 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、d-free-3.3.8 gcc 4.1.0 )下面的过程是在 HOST PC上已经正确的安装了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 文件夹里就是/root/qt/qt-

3、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.3.8 cd

4、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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - -

5、- 用 arm-none-linux-gnueabi-gcc和 arm-none-linux-gnueabi-g+替代以下的arm-linux-gcc 和 arm-linux-g+ QMAKE_CC = arm-linux-gcc 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.8 export QTDIR=$QTEDIR export PATH=/opt/freesc

6、ale/usr/local/gcc-4.1.1-glibc-2.4-nptl-6/arm-none-linux-gnueabi/bin:$PATH export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$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 注意:在

7、configure的时候会出现一个警告WARNING: Failure to find: .moc/release-static-mt-emb-x86/allmoc.cpp 关于这个问题官方已经给出答案,引用如下This is not a problem. It happens everytime Qt/embedded is configured. 所以,这个警告可以不预理会。第六步: make 或者是 make sub-src make/make sub-src 注意: make的时候由于对于qt3 的交叉编译工具的gcc 版本问题而导致提示如下错误:./include/qstring.h

8、: In member function ushort& QChar:unicode(): ./include/qstring.h:199: error: cannot bind packed field (QChar*)this)-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 & _G

9、NUC_MINOR_ = 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - # define Q_NO_PACKED_REFERENCE # endif # endif # if !defined(_EXCEPTIONS) # define Q_NO_EXCEPTIONS # endif 修改如下 : # if (defined(_arm_) | defined(_ARMEL_) & !defined(QT_MOC_CPP)

10、# 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_PACKED_POINTERS +# endif # endif # if !defined(_EXCEPTIONS) # define Q_NO_EXCEPTIONS # endif 打开 src/include/qstring.h查看 195-199 行ushort

11、unicode() const return ucs; #ifdef Q_NO_PACKED_REFERENCE ushort &unicode() return *(&ucs); #else ushort &unicode() return ucs; #endif 修改如下:ushort unicode() const return ucs; #ifdef Q_NO_PACKED_REFERENCE ushort &unicode() return *(&ucs); +#elif defined Q_NO_PACKED_POINTERS + ushort &unicode() ushort&

12、 tmp = ucs; return tmp; #else ushort &unicode() return ucs; #endif ps:+ 号表示修改的地方接下来就是 make clean make 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 第七步 strip 交叉编译成功后在 /lib文件夹下生成以下文件:libqte-mt.so libqte-mt.so.3 libqte-mt.so.3.3 libqte-mt.s

13、o.3.3.8 rootlocalhost lib# ls -l lrwxrwxrwx 1 root root 18 09-05 17:25 libqte-mt.so - libqte-mt.so.3.3.8 lrwxrwxrwx 1 root root 18 09-05 17:25 libqte-mt.so.3 - libqte-mt.so.3.3.8 lrwxrwxrwx 1 root root 18 09-05 17:25 libqte-mt.so.3.3 - libqte-mt.so.3.3.8 -rwxr-xr-x 1 root root 7091636 09-07 08:51 li

14、bqte-mt.so.3.3.8 我们先来查看文件信息: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), not stripped 此时显示的是 not stripped,即没有经过 strip 。rootlocalhost lib# arm-none-linux-gnueabi-strip libqte-mt.so.3.3.8 执行 strip命令之后我们再次查看文件信息:rootlocalhost lib# f

15、ile 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发生明显变化的,不过在实际的开发过程中,我们是不提倡这样做的,因为使用strip后, 使用 gdb 时就无法获得调试信息了。故,在开发过程,我们为了方便以后的调试最好不要strip 。后记:因为是初步交叉编译,所以触摸屏支持和字体库的添加,中文支持,如何添加 wenquanyi 字体等等,还有库的裁减都没有具体实现,不过完成后我会继续写出来,与大家分享!另外,很多地方我懒得注释,因为很多知识都是交叉编译的基础只是,请读者自己理解!这也是一个学习的过程。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁