因实际项目需求,需将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. matrix_multiply代码解析
  2. (C++)A+B 输入输出练习VI 每行的第一个数N,表示本行后面有N个数。
  3. 一个把ListString转化为以,隔开的字符串的方法
  4. 检查用户显示器的分辨率
  5. 智能车技术与实践_ROS入门
  6. win下php5.4安装ffmpeg-php扩展
  7. HDFS NameNode内存详解
  8. er图外键怎么表示_本周话题:取消考研复试最能实现相对公平?你怎么看?
  9. php mysql redis mq_docker 搭建 php-mysql-nginx-redis-rabbitmq环境
  10. WCF分布式安全开发实践(1):传输安全模式之匿名客户端:Transport_None_WSHttpBinding
  11. C#类的定义与对象使用
  12. python 特征选择卡方_4. 机器学习之特征选择-Python代码
  13. 数字图像处理 冈萨雷斯 课后习题答案
  14. python写字动画_Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python
  15. hdu2201 熊猫阿波的故事
  16. APP设计邀请功能,用邀请链接还是邀请码比较好呢?
  17. Ubuntu虚拟机中网络中没有网卡
  18. 举个栗子!Tableau 技巧(189):用拱形图 ARC chart 呈现数据分布
  19. SQL注入进阶:掌握布尔盲注和延时注入攻击技巧
  20. 使用Python处理百万数据量的Excel文件:删除列、切分换行、替换去重

热门文章

  1. java二次指数平滑法预测未来的值
  2. Auto ARIMA 逐个时间点预测
  3. Tcpdump抓包实操
  4. 关闭mysql的安全模式_mysql开启和关闭安全模式
  5. 2020年中职学计算机有前途吗,2020年南昌中专计算机专业都学什么
  6. 斯图加特大学GPU光线投射体渲染技术提携
  7. Java 面向对象编程的三大特性——封装、继承、多态
  8. jzoj4313 电话线铺设(最小生成树+最近公共祖先)
  9. [卷积核]空洞卷积(转)
  10. 安装Vim,提示“Could not get lock......”