嵌入式linux——QT-ARM环境搭建

一、环境准备

  1. ubuntu—64位系统(版本视自己的情况而定。本人的是18.04)
  2. 交叉编译工具链(网上有很多文章讲这个、不在赘述)
  3. tslib

        tslib用于触摸屏坐标校准,根据tslib参数配置,可以改变触摸屏精度下载tslib库的源码:Tags · libts/tslib · GitHub

版本:tslib-1.22.tar.bz2

版本:tslib-1.22.tar.bz2

        4.QT版本

下载地址:

Index of /archive/qt/5.15/5.15.2/singleIndex of /archive/qt/5.15/5.15.2/single

                选择一个版本不高也不低的即可

二、tslib编译

1.将下载的源码拷贝到ubuntu虚拟机中,然后解压:

tar xvf tslib-1.22.tar.bz2

2. 编译 tslib 的时候需要先在 ubuntu 中安装一些文件:

sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

3. ubunt中创建一个名为“tslib”的目录存放编译结果(注意,一定要知道该目录的路径),然后执行以下指令进行编译:

./configure --host=arm-buildroot-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/book/tslib

Make

Make install

注意:

--host=arm-buildroot-linux-gnueabihf(这是我的工具链) //这里要指定自己的交叉编译工具链

4.编译完成后,make install会将编译成果复制到指定的tslib目录中:

5.将tslib文件夹先整个打包为arm-tslib.tar.bz2文件,后面移植到开发板用

三、QT源码编译

1.将之前下载的qt-everywhere-src-5.15.2.tar.xz(你自己下载的)拷贝到Ubuntu中,然后解压

tar -xvf qt-everywhere-src-5.15.2.tar.xz

2.修改qmake.conf(重要,认真核对)

进入 cd qt-everywher-src-5.15.2目录,打开qmake.conf----> sudo gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

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

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

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

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
AMAKE_CXXFLAGS += -02 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard


# modifications to g++.conf
QMAKE_CC                = arm-buildroot-linux-gnueabihf-gcc
QMAKE_CXX               = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK              = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-buildroot-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = arm-buildroot-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-buildroot-linux-gnueabihf-objcopy
QMAKE_NM                = arm-buildroot-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-buildroot-linux-gnueabihf-strip
load(qt_config)

注意:所有的arm-buildroot-linux-gnueabihf都要换成你自己的工具链,否则之后编译会不通过

3.当前目录下编写一个autoconfigure.sh文件。然后根据自己的情况,写入如下配置

./configure -prefix /home/book/qt-everywhere-src-5.15.2/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/book/tslib/include \
-L/home/book/tslib/lib \
-recheck-all

其中要注意3处自己的配置路径(要改成你自己的路径)

  1. -prefix /home/book/qt-everywhere-src-5.15.2/arm-qt :为编译输出路径
  2. -L/home/book/tslib/include:为tslib头文件路径
  3. -L/home/book/tslib/lib:为tslib库文件路径

其中一些参数含义:

-opensource:构建Qt的开源版本

-release:使用release版本的Qt

-xplatform linux-arm-gnueabi-g++:指定编译器

-skip qt3d:跳过Qt3d

-make libs:编译要用到的库

-make examples:编译生成Qt的例程代码

-nomake tools:不生成Qt的工具

-no-openssl:不使用openssl

4.编译

Chmod +x autoconfigure.sh
./autoconfigure.sh

注意:如果发生了报错,请核对之前的配置

make

注意:编译部分比较久,可能要几个小时,可以看看书或做些其他的事情

编译完成之后,再执行make install进行安装,安装之后就可以看到arm-qt文件中的内容了

注意:这部分也比较久

4.将arm-qt文件夹打包为arm-qt.tar.bz2文件,后面移植到开发板上用

tar -jcf arm-qt.tar.bz2 arm-qt

四.开发板上配置QT环境

1.复制tslibQt的编译文件

将之前打包的arm-tslib.tar.bz2arm-qt.tar.bz2压缩包复制到板子中,可以先复制到nfs网络位置,然后解压,解压后开删除无用的压缩包。

这是对arm-qt的操作步骤:

cp arm-qt.tar.bz2 /home/book/nfs_roofs
cd /home/book/nfs_roofs
tar xf arm-qt.tar.bz2
rm arm-qt.tar.bz2

arm-tslib复制与解压过程类似

2.设置开发板环境变量

编辑/etc/profile,写入如下内容:

export TSLIB_ROOT=/mnt/tslib//这里改为你之前解压的路径,我开发板挂载了网络文件系统

export TSLIB_ROOT=/mnt/tslib        //这里改为你自己解压的路径,我用的是网络文件系统
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export  LD_PRELOAD=$TSLIB_ROOT/lib/libts.so

export QT_ROOT=/mnt/arm-qt//这里改为你之前解压的路径
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1

然后使该配置立即生效:

source /etc/profile

五.QT运行测试

Qt的编译文件中,自带的Qt的一些例子,可以先来在板子上运行这些例子看看Qt程序能否在板子上正常运行。

这是运行其中的一个程序:

进入/mnt/arm-qt/examples/widgets/animation/animatedtiles/

执行 ./nimatedtiles

此时,开发板会运行一个测试程序

若失败则导入配置参数

vi /etc/profile
tforms
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1
source /etc/profile

六、编译自己的QT程序

6.1复制源文件到Ubuntu

Windows中的QT工程源码,复制到Ubuntu中,注意.user文件是不需要的,这个是Windows平台的编译配置

6.2交叉编译

使用qmake生成makefile

对应工程文件的目录直接调用该qmake工具:

/home/book/qt-everywhere-src-5.12.9/arm-qt/bin/qmake

执行成功后,就可以看到生成的makefile文件

然后。make生成可执行文件,用file命令可查看目标文件的属性

之后,就可以将可执行文件放开发板上运行了

  • 33
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
嵌入式系统开发基础——基于ARM微处理器和Linux操作系统[滕英岩][习题解答] 目录第1章 嵌入式系统基础知识 1.1 嵌入式系统的特点及分类 1.1.1 嵌入式系统的特点 1.1.2 嵌入式系统的分类 1.2 嵌入式系统的软硬件结构 1.3 嵌入式微处理器ARM 1.3.1 ARM简述 1.3.2 ARM编程模型 1.3.3 ARM指令集 1.3.4 C语言和汇编语言的混合编程 1.4 嵌入式操作系统 1.5 基于ARMLinux嵌入式开发平台 习题 第2章 嵌入式交叉编译环境 2.1 嵌入式交叉编译环境简介 2.2 NFS服务 2.3 Samba服务 2.4 Windows和LJnux混合开发模式 2.4.1 VMware虚拟机设置共享 2.4.2 SSH客户端软件 2.4.3 Windows下的文本编辑工具 2.5 GCC编译器 2.5.1 GCC的编译过程 2.5.2 GCC的其他选项 2.6 GDB调试器 2.6.1 GDB基本使用方法 2.6.2 GDB基本命令 2.6.3 GDB典型实例 2.7 Make工具的使用 2.7.1 Makefile基础知识 2.7.2 Makefile应用 2.7.3 使用autotools自动生成Makefile文件 2.8 嵌入式交叉编译环境的搭建 2.8.1 嵌入式交叉编译环境的安装与配置 2.8.2 minicom和Windows XP超级终端的配置 习题 第3章 嵌入式开发环境的搭建 3.1 嵌入式开发环境概述 3.2 Flash程序烧写 3.3 BootLoader程序 3.3.1 BootLoader程序原理 3.3.2 几种流行的Linux BootLoader 3.3.3 S3C2410平台上的VIVI分析 3.4 内核的裁减和编译 3.4.1 内核的裁减 3.4.2 内核的编译 3.4.3 内核的烧写 3.5 根文件系统的构建 3.5.1 根文件系统 3.5.2 BusyBox工具介绍 3.5.3 根文件系统的构建过程 3.6 驱动程序原理与开发 3.6.1 驱动程序基本原理 3.6.2 Linux下字符型设备驱动管理 3.6.3 Linux下字符型设备驱动程序实例分析 习题 第4章 MiniGUI应用程序设计 4.1 嵌入式GUI概述 4.2 常用嵌入式GUI介绍 4.3 MiniGUI概述 4.4 MiniGUI的编译和安装 4.5 MiniGUI程序框架 4.6 MiniGUI编程基础 4.6.1 MiniGUI窗口 4.6.2 MiniGUI消息及消息队列 4.6.3 MiniGUI对话框 4.6.4 MiniGUI菜单 4.6.5 MiniGUI基本控件 4.7 MiniGUI综合实例 习题 第5章 嵌入式数据库 5.1 嵌入式数据库的特点 5.2 嵌入式数据库的应用 5.3 SQLite数据库 5.3.1 SQLite3的安装 5.3.2 SQLite3的命令 5.3.3 SQLite3的数据类型 5.3.4 SQLite3的API函数 5.3.5 SQLite3在MiniGUI中的应用 习题 第6章 Qt图形界面应用程序开发 6.1 Qt简介 6.1.1 Qt的历史 6.1.2 Qt中主要的类 6.1.3 信号和槽 6.1.4 Qt的帮助文档 6.1.5 Qt4的特点和优势 6.1.6 Qt4的安装与配置 6.1.7 Qt4程序结构及实例 6.2 Qt4 Designer的应用 6.2.1 Qt Designer的应用 6.2.2 Qt中的控件及对话框类 6.2.3 Qt应用程序实例——计算器 6.3 Qt4与数据库 6.3.1 Qt4与数据库的连接 6.3.2 执行SQL命令 6.3.3 SQL模型 6.3.4 Linux下中文输入 6.3.5 Qt4与SQLite3的应用程序实例 6.4 Qt/Embedded 6.4.1 Qt/Embedded的图形引擎实现 6.4.2 Qt/Embedded的事件驱动 6.4.3 Qt/Embedded的移植 6.4.4 VMware增加虚拟的硬盘 6.4.5 Qt/Embedded的安装 习题 参考文献
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值