分享

交叉编译ARM版 Qt (qt

 own360 2014-03-17

       因实际项目需求,需将Qt编译成LINUX-ARM版,以下为整个操作过程,使用Qt编写的程序已在实际开发板上运行,在此贴出,但愿能为需要的朋友提供上帮助。


准备工作:
Linux内核版本:   
        Linux 2.6.35-22-generic #33-Ubuntu
 
交叉编译工具:
        arm-none-linux-gnueabi 4.4.1
 
Qt安装包:
        qt-everywhere-opensource-src-4.7.3.tar.gz



安装
一.安装交叉编译工具
 1.本机使用的交叉编译工具是:arm-none-linux-gnueabi 
   
 2.添加交叉编译工具的路径至相应环境变量中:
   export PATH=/usr/CodeSourcery/Sourcery_G++_Lite/bin/:$PATH
   
 3.通过以下命令查看arm-none-linux-gnueabi编译工具是否安装成功
   a. 执行:arm-none-linux-gnueabi-g++ -v
   b. 执行:arm-none-linux-gnueabi-gcc -v
   如果以上两步都能正确打印对应的版本信息,则表明arm-none-linux-gnueabi编译工具
   已安装成功!

   
二.交叉编译ARM版Qt
 1.下载Qt源码包 qt-everywhere-opensource-src-4.7.3.tar.gz;
 
 2.解压Qt源码包
   tar -xvfz qt-everywhere-opensource-src-4.7.3.tar.gz
 
 3.修改文件: /usr/local/qt-4.7.3-linux-arm/mkspecs/qws/linux-arm-g++/qmake.conf
   
   # 设置交叉编译工具链:
   # 本项目使用的交叉编译工具是 arm-none-linux-gnueabi-g++
   #
   QMAKE_CC                         = arm-none-linux-gnueabi-gcc
   QMAKE_CXX                      = arm-none-linux-gnueabi-g++
   QMAKE_LINK                      = arm-none-linux-gnueabi-g++
   QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++ 
   
   QMAKE_AR                   = arm-none-linux-gnueabi-ar cqs
   QMAKE_OBJCOPY      = arm-none-linux-gnueabi-objcopy
   QMAKE_STRIP             = arm-none-linux-gnueabi-strip
   
 4.(如有需要,需修改g++.conf文件)
   修改文件: /usr/local/qt-4.7.3-linux-arm/mkspecs/common/g++.conf
 
   # 设置使用ARM高级特性的编译标志:
   #
   QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a -mtune=cortex-a9 -mfloat-abi=softfp
 
 5.配置Qt编译选项
   
   进入Qt解压目录,执行如下命令:
   ./configure -prefix /usr/local/qt-4.7.3-linux-arm-install -embedded arm -host-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-g++
   
 6.执行 make 命令;
   该步骤大致需要2~3个小时
 
 7.执行 make install 命令;
   
 8.修改用户环境变量  
   export ARMQTDIR=/usr/local/qt-4.7.3-linux-arm-install
   export PATH=$ARMQTDIR/bin:$PATH
   export MANPATH=$ARMQTDIR/man:$MANPATH
   export LD_LIBRARY_PATH=$ARMQTDIR/lib:$LD_LIBRARY_PATH


 9.测试 ARM 版 QT 是否安装并配置成功:
    a. 执行:qmake -v
        打印以下对应信息:
                QMake version 2.01a
                Using Qt version 4.7.3 in /usr/local/qt-4.7.3-linux-arm-install/lib
    b. 执行:which qmake
                打印以下对应信息:
                 /usr/local/qt-4.7.3-linux-arm-install/bin/qmake
 
    c. 编写一个简单的测试程序,文件名为hello.cpp,进入该文件目录,进行工程编译,看是否能正确通编译
  
         hello.cpp源码:
         #include <QApplication>
         #include <QDebug>
         int main(int argc,char *argv[]) 
        {
            qDebug("Hello, welcome to Qt world!");
            return 0;
         }
  
  顺序执行以下操作:
  @1. 执行:qmake -project hello1.cpp
        生成 hello1.pro 工程文件
  @2. 执行:qmake hello1.pro
        生成 Makefile 文件 
  @3. 执行:make
        生成 hello.o, hello 文件 
  
       如果执行@2步骤时出现以下错误:
           QMAKESPEC has not been set, so configuration cannot be deduced.
           Error processing project file: hello1.pro
       则是 QMAKESPEC 变量没有设置好,执行:
      export QMAKESPEC=/usr/local/qt-4.7.3-linux-arm-install/mkspecs/qws/linux-arm-g++
  
    如果以上对应的信息都能正确打印,说明 ARM 版 QT 安装并配置成功,大功告成,可以你的ARM版QT之旅了!

 
友情提示:
       在以上所有过程中,请务必注意相关路径,及环境变量的配置,另外,请根据自己的路径对相应部分做修改。



更多 2
相关主题推荐
交叉编译 opensource arm linux内核 processing
相关博文推荐
Xcode升级到5.1后,一些静态库.a...
开源 免费 java CMS - Fre...
linux内核模块编译及动态加载
内核驱动-U-Boot+内核制作+根文件...
arm 中汇编.S文件注意与不懂
GIS是怎样建成的之三:图形,图形,我们...
Android学习系列(一)初识安卓
Linux I/O调度算法深度研究(一)...
查看评论
5楼 dengtaocs 昨天 17:51发表 [回复]
您好,我在pc上安装qt时,make时,终端显示的信息是g++......,然后我在交叉编译arm端qt时,终端显示的依然是开头为g++.....等,我想这里应该即时显示的是arm-none-linux-gnueabi-g++ ......,难道是我配置错了,我几个小时呢,我怕徒劳啊。请问您之前是这样吗/谢谢
4楼 chongtian_zhiying 2014-01-14 19:53发表 [回复]
谢谢!
3楼 yzbx 2013-11-24 20:16发表 [回复]
感谢分享
2楼 royljs2010 2012-02-10 14:55发表 [回复]
怎么我到这一步 ./configure -prefix /usr/local/qt-4.7.3-linux-arm-install -embedded arm -host-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm--gnueabi-g++,回车就出现错误了?
一堆使用说明出现。
Re: vacole 2012-02-21 23:36发表 [回复]
回复royljs2010:不知道你所说的一堆错误是什么错误,能否具体点
Re: stevenfddx 2012-02-17 09:28发表 [回复]
回复royljs2010:你这个问题解决了吗?
1楼 vacole 2011-10-17 09:35发表 [回复]
后来发现在 ../mkspecs/qws/ 下存在目录 linux-arm-gnueabi-g++,查看里面的内容跟上述修改 ../mkspecs/qws/linux-arm-g++/qmake.conf 文件后是一致的,所以修改../mkspecs/qws/linux-arm-g++/qmake.conf文件内容这步操作可以省略掉了,不过在执行./configure 命令时后面的参数也需做对应的变更,将 -xplatform /qws/linux-arm-g++ 改为 -xplatform /qws/linux-arm-gnueabi-g++

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多