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


准备工作:

Linux内核版本:   

        开发电脑:Ubuntu12.04,开发板:linux-2.6.37

 

交叉编译工具:

        arm-none-linux-gnueabi 4.4.1

 

Qt安装包:

        qt-everywhere-opensource-src-4.8.4.tar.gz






安装

一.安装交叉编译工具

 1.本机使用的交叉编译工具是:arm-none-linux-gnueabi 

   

 2.添加交叉编译工具的路径至相应环境变量中:

   export PATH=/usr/local/arm-2009q1-203/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.8.4.tar.gz;

 

 2.解压Qt源码包

   tar -xvfz qt-everywhere-opensource-src-4.8.4.tar.gz

 

 3.修改文件: /usr/local/Qt-4.8.4-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.8.4-linux-arm/mkspecs/common/g++.conf

 

   # 设置使用ARM高级特性的编译标志:

   #

   QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a -mtune=cortex-a8 -mfloat-abi=softfp

 

 5.配置Qt编译选项

   

   进入Qt解压目录,执行如下命令:

./configure -prefix /usr/local/Qt-4.8.4 -embedded arm -xplatform /qws/linux-arm-g++ -depths 16,24,32 -little-endian -no-mmx -no-3dnow -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -qt-freetype -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -plugin-mouse-pc -fast -qt-gfx-transformed -opensource-confirm-license
   或者写一个脚本config.sh,内容如上,之后运行这个脚本:./config.sh

 6.执行 make 命令;

   该步骤大致需要2~3个小时

错误:qtconcurrentiteratekernel.cpp:(.text+0x3c): undefined reference to `clock_gettime'

修改:vim src/corelib/Makefile 加上-lrt

LIBS          = $(SUBLIBS)  -L/opt/qt-everywhere-opensource-src-4.8.4/lib -lpthread -lm -ldl -lrt



7.执行 make install 命令;



8.修改用户环境变量

export ARMQTDIR=/usr/local/Qt-4.8.4

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.8.4 in /usr/local/Qt-4.8.4/lib

b. 执行:which qmake

打印以下对应信息:

/usr/local/Qt-4.8.4/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.8.4/mkspecs/qws/linux-arm-g++

cd /usr/local/Qt-4.8.4/lib/

file libQT*   看输出信息是ELF ARM

之后将/usr/local/Qt-4.8.4/lib/libQt* 根文件系统/usr/lib/下

  

    如果以上对应的信息都能正确打印,说明 ARM 版 QT 安装并配置成功,大功告成,可以你的ARM版QT之旅了!

哈哈。大家好好玩吧。。。

DM8168 --交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.8.4)相关推荐

  1. 交叉编译arm版linaro-1.13.1-4.7-2013.03

    肯定有人要说,你是不是闲得,编个arm版本的干什么,官方已经发出了linux.win版本了! 是的,官方的确有这些版本,但是没有arm版,更高版本的linaro好像都带的有arm版了.但是,好像还是没 ...

  2. QT 交叉编译 ARM / CSKY

    参考: QT 下载地址 环境: ubuntu16.04(虚拟机) QT版本:qt-everywhere-src-5.12.9 运行架构:ARMV7 / CSKY 下文记录的交叉编译的目标运行架构为 A ...

  3. DM8168 OpenCV尝试与评估(编译ARM版OpenCV)

     交叉编译opencv2.3.1,并在DM8168 cortex A8中执行图像处理. 开发环境: PC:ubuntu12.04LTS.Intel Core 2 Duo CPU  E7200@2. ...

  4. apache arm 交叉编译_移植apache2 ARM版 – 交叉编译apache2 | 学步园

    下载apache2 http://apache.fayea.com/apache-mirror//httpd/httpd-2.4.6.tar.bz2 1. tar jxvf httpd-2.4.6.t ...

  5. Qt Qt/E Qtopia 的关系

    Qt的授权是分为两条线,商业版和开源版.如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的:如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序也必须是GPL的.不过自从qt ...

  6. Qt, QT/E, Qtopia 的区别

    转自Qt, QT/E, Qtopia 的区别 Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等.由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Q ...

  7. QT - QT中配置MSVC编译环境 以及 VS中配置QT开发环境

    本文主要记录一下如何在 QT5.14.2 中配置 MSVC2017 构建套件,以及在VS2017中配置QT的开发环境.开发环境为 Win10 +  QT5.14.2 + Visual Studio 2 ...

  8. 交叉编译php-5.6.30,linux下用arm-none-linux-gnueabi交叉编译arm内核模块

    前不久导师要求交叉编译一个基于arm平台开发的内核模块来练手,在网上查了很多资料才弄出来,于是将这些零散的信息综合起来给和我一样的入门人员了解.水平有限,请谅解~ 1.安装arm-none-linux ...

  9. 《计算机组成与设计(ARM版)》读书笔记-第二章指令2

    文章目录 2.9 人机交互 2.10 LEGv8中的宽立即数和地址的寻址 2.10.1 宽立即数 2.10.2 分支中的寻址 2.10.3 LEGv8寻址模式总结 2.10.4 机器语言解码 2.11 ...

最新文章

  1. mixin network_基于Mixin Network的PHP比特币开发教程: 机器人接受比特币并立即退还用户...
  2. 10.Azure应用程序网关(上)
  3. mysql为什么添加索引_当我添加新索引时,为什么MySQL中索引的基数保持不变?
  4. Typora markdown公式换行等号对齐_下了31个markdown编辑器,我就不信选不出一个好用的...
  5. proxomitron 个人代理工具
  6. TBXML常用API
  7. mysql学习之路三(转)
  8. 红帽Linux登录密码忘了,redhat linux忘记登陆密码之解决办法
  9. Oracle客户端安装配置crystal reports注意
  10. 关于计算机设计的英语作文,计算机专业设计英文参考文献 计算机专业设计专著类参考文献有哪些...
  11. mysql 有没有minus_MySQL实现差集(Minus)和交集(Intersect)
  12. Android Hook框架adbi的分析(1)---注入工具hijack
  13. nohup命令及其输出文件 linux nohup命令详解
  14. php 红宝石,红宝石-世界名贵宝石排行榜-天天排行网
  15. js(jquery方式) 直接访问 elasticsearch
  16. Web前端面试之JavaScript典型面试题及答案
  17. AD10长方形通孔焊盘的画法
  18. mysql存储过程没有此表_mysql用存储过程写入 一个表A中没有存在在另一个表B的数据...
  19. 外航空姐异国情感生活:空姐之恋
  20. 医院有线电视数字前端改造系统分析与解决方案探讨

热门文章

  1. python判断某一天是周几
  2. pandas重采样时指定对不同列的不同操作
  3. angular下拉框点击无反应_angular 实现 下拉菜单 的 点击其他区域关闭下拉菜单功能?...
  4. node.js(八 --- express)
  5. block,inline和inlinke-block细节对比
  6. [iOS]CIFilter滤镜
  7. 备份图解 ---mysql 博客
  8. magento导入导出Custom Options, Tier Prices and Grouped Products
  9. tensorflow2.3匹配python版本_Python 包安装和管理工具 pip 19.2 发布
  10. (53)FPGA面试题-利用任务task实现单字节乘法功能(Verilog语言实现)