DM8168 --交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.8.4)
因实际项目需求,需将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)相关推荐
- 交叉编译arm版linaro-1.13.1-4.7-2013.03
肯定有人要说,你是不是闲得,编个arm版本的干什么,官方已经发出了linux.win版本了! 是的,官方的确有这些版本,但是没有arm版,更高版本的linaro好像都带的有arm版了.但是,好像还是没 ...
- QT 交叉编译 ARM / CSKY
参考: QT 下载地址 环境: ubuntu16.04(虚拟机) QT版本:qt-everywhere-src-5.12.9 运行架构:ARMV7 / CSKY 下文记录的交叉编译的目标运行架构为 A ...
- DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
交叉编译opencv2.3.1,并在DM8168 cortex A8中执行图像处理. 开发环境: PC:ubuntu12.04LTS.Intel Core 2 Duo CPU E7200@2. ...
- 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 ...
- Qt Qt/E Qtopia 的关系
Qt的授权是分为两条线,商业版和开源版.如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的:如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序也必须是GPL的.不过自从qt ...
- Qt, QT/E, Qtopia 的区别
转自Qt, QT/E, Qtopia 的区别 Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等.由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Q ...
- QT - QT中配置MSVC编译环境 以及 VS中配置QT开发环境
本文主要记录一下如何在 QT5.14.2 中配置 MSVC2017 构建套件,以及在VS2017中配置QT的开发环境.开发环境为 Win10 + QT5.14.2 + Visual Studio 2 ...
- 交叉编译php-5.6.30,linux下用arm-none-linux-gnueabi交叉编译arm内核模块
前不久导师要求交叉编译一个基于arm平台开发的内核模块来练手,在网上查了很多资料才弄出来,于是将这些零散的信息综合起来给和我一样的入门人员了解.水平有限,请谅解~ 1.安装arm-none-linux ...
- 《计算机组成与设计(ARM版)》读书笔记-第二章指令2
文章目录 2.9 人机交互 2.10 LEGv8中的宽立即数和地址的寻址 2.10.1 宽立即数 2.10.2 分支中的寻址 2.10.3 LEGv8寻址模式总结 2.10.4 机器语言解码 2.11 ...
最新文章
- matrix_multiply代码解析
- (C++)A+B 输入输出练习VI 每行的第一个数N,表示本行后面有N个数。
- 一个把ListString转化为以,隔开的字符串的方法
- 检查用户显示器的分辨率
- 智能车技术与实践_ROS入门
- win下php5.4安装ffmpeg-php扩展
- HDFS NameNode内存详解
- er图外键怎么表示_本周话题:取消考研复试最能实现相对公平?你怎么看?
- php mysql redis mq_docker 搭建 php-mysql-nginx-redis-rabbitmq环境
- WCF分布式安全开发实践(1):传输安全模式之匿名客户端:Transport_None_WSHttpBinding
- C#类的定义与对象使用
- python 特征选择卡方_4. 机器学习之特征选择-Python代码
- 数字图像处理 冈萨雷斯 课后习题答案
- python写字动画_Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python
- hdu2201 熊猫阿波的故事
- APP设计邀请功能,用邀请链接还是邀请码比较好呢?
- Ubuntu虚拟机中网络中没有网卡
- 举个栗子!Tableau 技巧(189):用拱形图 ARC chart 呈现数据分布
- SQL注入进阶:掌握布尔盲注和延时注入攻击技巧
- 使用Python处理百万数据量的Excel文件:删除列、切分换行、替换去重
热门文章
- java二次指数平滑法预测未来的值
- Auto ARIMA 逐个时间点预测
- Tcpdump抓包实操
- 关闭mysql的安全模式_mysql开启和关闭安全模式
- 2020年中职学计算机有前途吗,2020年南昌中专计算机专业都学什么
- 斯图加特大学GPU光线投射体渲染技术提携
- Java 面向对象编程的三大特性——封装、继承、多态
- jzoj4313 电话线铺设(最小生成树+最近公共祖先)
- [卷积核]空洞卷积(转)
- 安装Vim,提示“Could not get lock......”