历史上的今天

今天是:2025年02月15日(星期六)

2020年02月15日 | 编译 arm 版的qt

发布者:和谐共存 来源: eefocus关键字:编译  arm  qt 手机看文章 扫描二维码
随时随地手机看文章

因为项目需要,我们需要在开发板上使用QT开发平台,因此需要编译一个arm版的QT. 在网上找了一些资料,费了几天时间,终于成功了。


第一步,准备源码

先下载QT 源码,在http://qt-project.org/downloads页面,找到Qt libraries 4.8.6 for embedded Linux (230 MB) (Info), down 下来,拷贝到linux系统下。


解压缩,tar -xzvf qt-everywhere-opensource-src-4.8.6.tar.gz 

qt 源码将被解压到qt-everywhere-opensource-src-4.8.6下。


第二步,准备编译器

然后安装交叉编译器,我们的arm 平台编译器已经安装好,安装在 /home/xyz/arm/ 目录下。


为了使QT 配置程序能找到我们的编译器,必须把交叉编译器所在的目录放到PATH环境变量上。


export PATH=$PATH:/home/xyz/arm/bin



第三步,配置,编译,安装

然后到QT的源码所在目录下,


再进到qws目录下

cd mkspecs/qws


ls 看一下,有一个适合我们的配置,就是linux-arm-gnueabi-g++ ,如果没有,就自己建一个目录,然后从别的目录下拷贝这两个文件


qmake.conf  

qplatformdefs.h

进入到linux-arm-gnueabi-g++目录,看一下qmake.conf 的内容,如下:


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++


# modifications to linux.conf

QMAKE_AR                = arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy

QMAKE_STRIP             = arm-none-linux-gnueabi-strip


正确,我们就使用这个配置,如果不正确,可以改成自己的编译器的名字。



接下来配置QT, 在QT的源码目录下有一个可执行程序 configure, 运行./configure --help 可以看到详细的配置选项,

为了操作方便,可以写一个脚本文件,文容如下


./configure

-embedded arm

-xplatform qws/linux-arm-gnueabi-g++

-release

-opensource 

-fast 

-stl

-no-accessibility 

-no-scripttools 

-no-mmx 

-no-multimedia 

-no-svg 

-no-3dnow 

-no-sse 

-no-sse2 

-no-libmng 

-no-libtiff 

-no-multimedia 

-silent 

-qt-libpng 

-qt-libjpeg 

-make libs 

-nomake tools

-nomake examples

-nomake docs 

-nomake demos

-nomake translations

-no-nis

-no-cups

-no-iconv 

-no-dbus 

-no-openssl 

-little-endian

-qt-freetype 

-depths all

-qt-gfx-linuxfb 

-no-gfx-transformed 

-no-gfx-multiscreen 

-no-gfx-vnc 

-no-gfx-qvfb 

-qt-kbd-linuxinput 

-no-glib 

-no-phonon

-no-phonon-backend

-no-webkit

-no-javascript-jit

-no-sql-db2 

-no-sql-ibase

-no-sql-mysql

-no-sql-oci

-no-sql-odbc

-no-sql-psql

-no-sql-sqlite

-no-sql-sqlite2

-no-sql-sqlite_symbian

-no-sql-symsql 

-no-sql-tds

-no-qt3support

-qt-mouse-linuxinput

-no-mouse-tslib

-no-mouse-linuxtp

-no-script

-no-largefile


保存,取名了qt.config.sh


这个配置几乎把QT裁剪到了最小尺寸,运行此脚本,生成Makefile, 

然后gmake, 这个过程很慢,请耐心等待。


然后gmake install, QT 库被安装到  /usr/local/Trolltech/QtEmbedded-4.8.6-arm



第四步,测试QT arm 开发环境

QT arm 版已经编译,安装完成。测试一下QT arm 开发环境


设置环境变量


export ARMQDIR=/usr/local/Trolltech/QtEmbedded-4.8.6-arm


export PATH=$ARMQDIR/bin:$PATH


export MANPATH=$ARMQDIR/man:$MANPATH


export LD_LIBRARY_PATH=$ARMQDIR/LIB:$LD_LIBRARY_PATH



执行qmake -v, 显示以下信息


QMake version 2.01a

Using Qt version 4.8.6 in /usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib


执行which qmake, 显示

 /usr/local/Trolltech/QtEmbedded-4.8.6-arm/bin/qmake



编写一个hello world 程序


#include

#include


int main(int argc,char *argv[])

{

        qDebug("Hello, welcome to Qt world!");

        return 0;

}


保存为hello.cpp


执行qmake -project hello.cpp -o hello.pro

生成hello.pro


执行qmake hello.pro 

生成Makefile


执行 make, 生成hello.o, hello



这一步遇到一个奇怪的问题,就是如果工作目录下包含了子目录,则运行qmake就会hang在那儿,这不知是不是QT的bug.


第五步,下载到开发板


首先在开发板的linux 系统下建立同名的目录,以便拷贝,


/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib


然后把/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib目录下的文件全部拷贝过去,我是打了一个包,然后用tftp传过去的。


然后把 libstdc++.so.6.0.9 和libz.so.1.2.3 传送到开发板的 /usr/local/lib 目录下,


设置环境变量 LD_LIBRARY_PATH 以便使QT 程序能找到相应的库,


export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib:/usr/local/lib


运行QT测试程序


testgui -qws


lcd 显示屏上显示出一个窗口界面,和在windows开发环境下显示出的界面基本相同。


至此,算是成功了。不过还没有做对触摸屏的支持。


关键字:编译  arm  qt 引用地址:编译 arm 版的qt

上一篇:Exynos4412交叉编译环境搭建
下一篇:三星S3C6410(ARM1176)平台Android资源获取与编译(RedHat AS5)

推荐阅读

  人工智能是目前新兴科技中最炙手可热的项目之一。中共十九大召开以后,中国进一步加速人工智能的研发,有望成为世界人工智能第一大国。  力争成人工智能第一大国  法国《论坛报》指出,中国许多新兴科技企业都已经越过了起步阶段,力争成为人工智能领域的佼佼者。  报道称,为了实现这一目标,中国可谓尽心尽力。近日,中国政府宣布将在北京西部...
人们期望公司不要对突飞猛进(Big Bang)的变革夸夸其谈,转而采用更具迭代精神的创新方法,转向产品管理,以及根据运营效率革新工作。首席信息官们因数字化转型而疲惫不堪,但这不仅仅是因为人们滥用这句话来描述几乎所有的IT现代化工作。结果表明,首席信息官们发现,在业务颠覆迅速发生的时代,要让耐不住漫长等待的首席执行官和董事会支持突飞猛进的...
交叉编译:在PC机(x86平台)上开发程序,在ARM板上运行,提高开发、编译速度。环境:Tiny4412SDK1506开发板需要软件:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz检测系统是否已经安装有交叉编译环境:# arm-linux-gcc -vbash: arm-linux-gcc: command not found1. 安装步骤:1)找到arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 所在路径,并解压压缩...
作为上一季度报告的一部分,Arm公司透露,他们的处理器设计的受欢迎程度继续成倍增长。制造业合作伙伴已经记录了基于Arm设计的67亿颗芯片的出货量,这大约相当于每秒钟生产842颗芯片,这是一个前所未有的速度。 Arm也毫无疑问是世界上最高效的处理器设计者:比如的Mali GPU系列发展至今只包含9个型号,但自2015年以来一直是出货量第一的GPU。如果Arm只卖...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved