IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 移植Qt到ARM平台及搭建Qt交叉编译环境 -> 正文阅读

[嵌入式]移植Qt到ARM平台及搭建Qt交叉编译环境

前言

写文章的目的是想通过记录自己的学习过程,以便以后使用到相关的知识点可以回顾和参考。

要想在ARM平台上运行Qt程序,得满足以下两个点:
1、ARM平台上搭建Qt运行环境
2、获得通过交叉编译后的Qt可执行文件

一、编译tslib库

从网上下载 tslib 源码压缩包,发送到 Ubuntu 中并解压,进入tslib源码目录,内容如下所示:
在这里插入图片描述
执行命令安装以下软件:

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

执行 autogen.sh 生成 Makefile:

./autogen.sh

配置使用的交叉编译器及 tslib 编译输出路径:

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

直接执行 make 编译及 make install 安装:

make
make install

安装完成后在当前目录下生成一个 arm-tslib 目录。也是我们上面指令的编译输出目录路径。可以查看生成目录下有以下内容:
在这里插入图片描述

二、移植 tslib 到文件系统

我把生成的 arm-tslib 放到了挂载的buildroot文件系统的跟目录,并改名为了 tslib。(可放在其它目录了,比如usr/lib,可不改名字,根据自己喜好,但接下来的环境变量要填对)
在这里插入图片描述
配置 tslib 的环境变量
打开文件系统根目录下的/etc/profile文件,填入以下内容:
在这里插入图片描述

三、编译Qt源码(用于移植到ARM)

从网上下载Qt源码 https://download.qt.io/,我下载的是5.12.9的版本。
在这里插入图片描述
放到 ubuntu 并解压得到 qt-everywhere-src-5.12.9源码目录
在这里插入图片描述
修改 qmake.conf,配置相关的编译器,默认使用arm-linux-gnueabi前缀。

gedit ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

在这里插入图片描述

配置编译选项,输入./configure -help 指令,查看可配置选项,由于配置选项太长,我另写了一个脚本来执行配置选项,名为autoconfig.sh,配置主要指定编译输出路径和功能选择:

#!/bin/bash
./configure -prefix /home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9 \
-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/xzj/tool/tslib-1.21/arm-tslib/include \
-L/home/xzj/tool/tslib-1.21/arm-tslib/lib \
-recheck-all

给执行权限,执行脚本进行配置

chmod +x ./autoconfig.sh
sudo apt-get install g++ // 配置前请先安装 g++
./autoconfig.sh

配置完成够开始进行编译和安装,由于编译用时比较久,最好使用多指令同时运行:

make -j12
make install

执行安装指令后,会在当前目录生成一个 armqt-5.12.9 文件,配置时命名的输出文件:
在这里插入图片描述

四、移植Qt到文件系统

把刚才生成的 armqt-5.12.9 放到挂载的 buildroot 文件系统的/opt目录中:
在这里插入图片描述
要想Qt 程序显示中文,需把中文字库放到新建一个/usr/share/fonts/目录下。配置 Qt5 的环境变量,打开文件系统/etc/profile,添加如下内容:
在这里插入图片描述

以上就是搭建ARM平台(开发板)的Qt运行环境,接下来需要在ubuntu搭建Qt交叉编译环境。

五、搭建 Qt Creator 交叉编译环境

从网上下载安装包安装 Qt Creator, qt-opensource-linux-x64-5.12.9.run
在这里插入图片描述
下载完成后,给权限并执行安装:

chmod u+x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run

接下来就会弹出安装窗口,就跟在win安装应用一样了,省略。

安装完成后, 配置Qt Creator Kits。打开Qt,点击工具->选项
在这里插入图片描述

配置 qmake,qmake在上面编译Qt源码后生成的armqt-5.12.9里面
在这里插入图片描述
配置 C++编译器,这里我使用以前安装的交叉编译器,我的在ubuntu的/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++

在这里插入图片描述

配置 Kits,选择刚才的Qt versions和C++编译器。
在这里插入图片描述
在这里插入图片描述
Qt环境搭建好了,可以新建一个项目试试,在新建项目时的Kits选项记得把刚才添加Kits也勾选上。

在这里插入图片描述
构建ARM平台上的Qt执行程序,就选上刚才新添加的Kit,然后点击构建,就会生成一个 build-test-ARM_Qt_5_12_9-Debug 的文件,里面就存放着Qt可执行程序,把这个可执行程序发送到ARM平台(开发板),然后直接运行就可以了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果想在ubuntu上运行,就选择默认的kit,然后直接点击绿色的三角形运行就可以了,同时会生成一个build-test-Desktop_Qt_5_12_9_GCC_64bit-Debug 文件,里面的可执行文件就是在ubuntu中运行的。
在这里插入图片描述
在这里插入图片描述

六、获得Qt可执行文件的另一种方法

除了上面说的在Qt Creator 中构建出可以在ARM平台上运行的Qt程序之外,还有另一种方法也可以得到可以在ARM平台上运行的Qt程序。

进入项目的文件夹,直接运行qmake,生成 Makefile,再执行 make 开始编译。

cd test
/home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9/bin/qmake
make

在这里插入图片描述
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:57:52  更:2021-07-23 10:58:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 8:37:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码