ubuntu下移植编译arm架构的QT

本文详述了在Ubuntu环境下移植和编译适用于ARM架构的Qt库的过程,包括下载交叉编译工具链,安装触摸屏库tslib,配置Qt源码,设置编译选项,以及在目标板上运行移植后的Qt程序。关键步骤包括配置交叉编译器,自定义编译选项,以及在QtCreator中配置Kits和qmake。
摘要由CSDN通过智能技术生成

利用QtCreator编译X86的Qt程序,直接点运行键就可编译运行程序,这是因为QtCreator帮我们配置了编译工具(qmake和gcc),但是要编译ARM版本的Qt程序,就需要移植ARM架构的QT库。

一、下载交叉编译工具链

下载arm -gcc的交叉编译工具链

二、下载触摸屏库tslib

1.切换到tslib目录:

  安装交叉编译tslib必须的一些工具(可以先查看是否已安装,ubuntu16.04自带这些工具,可跳过)
   sudo apt-get install autoconf
   sudo apt-get install automake
   sudo apt-get install libtool

2.利用脚本写编译过程
在tslib文件夹下新建文件configTslib14.sh

vi configTslib14.sh
内容如下:
#!/bin/sh
make clean && make distclean
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/tslib1.4 --cache-file=arm-l  inux.cache
make && make install

3.运行configTslib14.sh

./configTslib14.sh
执行结束后,我们查看一下是否安装成功,执行命令:
ls /opt/tslib1.4
如果出现bin,etc,include,lib这4个目录,说明交叉编译并安装tslib成功。

三、移植QT到ARM

1、 要移植Qt必须要用到Qt的源码,在这里也是用Qt5的源码来移植。源码下载,选择文件qt-everywhere-opensource-src-xxx.tar.gz下载。
2、将下载好的qt-everywhere-opensource-src-xxx.tar.gz移动至/opt目录下
在/opt目录下解压:sudo tar -zxvf qt-everywhere-opensource-src-xxx.tar.gz
然后进入解压后目录:cd qt-everywhere-opensource-src-xxx

3、下面设置编译平台。编译器是通过xplatform参数指定的,xplatform后面跟的参数实际上就时qtbase/mkspec下的文件夹的名字,这里以linux-arm-gnueabi-g++为模板,拷贝这个文件夹,重命名为arm-linux,然后修改这个文件夹里的qmake.conf,修改后的内容如下:

# qmake configuration for building with arm-linux-gnueabi-g++

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a     // 指定平台
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

/*
以下是指定交叉编译工具链的具体路径(你也可以设置成环境变量,直接写
arm-linux-gcc,这样就可以不用加上绝对路径,我这里因为linux下有多种版 本的工具链,所以加上绝对路径,具体写法要看你的linux情况)
*/
#modifications to g++.conf   
QMAKE_CC                = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-         2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc
QMAKE_CXX               = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-  2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-g++
QMAKE_LINK              = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-objcopy
QMAKE_NM                = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-nm -P
QMAKE_STRIP             = /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-strip
load(qt_config)

4、修改完成后返回顶层目录/opt/qt-everywhere-opensource-src-xxx。这时候要通过执行configure来生成Makefile文件了。我这里通过写一个脚本来自动生成Makefile文件,说白了就是把configure的参数写在脚本文件中。
vim autoConfigure.sh

#!/bin/sh
./configure \
-v \
-prefix /usr/local/Qt-5.5.0-arm \   //指定安装的位置
-release \
-opensource \
-no-accessibility \
-make libs \
-xplatform linux-arm-gnueabi-g++ \  // 指定平台 linux-arm-gnueabi-g++ 就是上面我们编辑  qmake.conf的那个文件夹
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-zlib \
-tslib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-I/usr/local/arm/tslib/include -L/usr/local/arm/tslib/lib   //指定tslib库,这是我linux中t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值