Linux篇 三、香橙派Zero2搭建Qt环境

news2024/11/16 5:58:32

香橙派Zero2系列文章目录

一、香橙派Zero2设置开机连接wifi
二、香橙派Zero2获取Linux SDK源码
三、香橙派Zero2搭建Qt环境

文章目录

  • 香橙派Zero2系列文章目录
  • 前言
  • 一、下载交叉编译工具
  • 二、编译QT库
    • 1.先去网站下载Qt的资源包
    • 2.解压
    • 3.开始移植:
    • 4.编译:
    • 5.安装:
  • 三. 安装QT
    • 1.配置QT
      • 1.打开qt
      • 2.点击 工具-选项-Kits-编译器
      • 3.在编译器的Manual中添加GCC和C++路径为交叉编译工具的路径
      • 4.在Qt Versions中添加qmake为编译好的qt目录
      • 5.构建套件Kit设置
    • 2.编译Qt任意例子
    • 3.使用打包命令打包程序上传到OrangePi
    • 4.成果
  • 总结


前言

主要讲述了移植QT的过程


一、下载交叉编译工具

默认在香橙派篇2中,已经成功拉取Linux的SDK源码的情况下

如果失败的话,可以直接去官网下载交叉编译工具

 cd orangepi-build//toolchains/

此处路径和上一篇的源码下载路径相同
ls 查看交叉编译工具链

在这里插入图片描述
选择gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu

home目录下创建user文件夹

复制到user里

路径根据实际情况填写

sudo cp -r gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/ /home/cheng/user/

改名字,赋予权限

mv gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/ gcc-aarch64-linux-gnu

sudo chmod -R 777 gcc-aarch64-linux-gnu

/home/cheng/user/gcc-aarch64-linux-gnu/bin 添加到环境变量里面

sudo gedit /etc/profile

在这里插入图片描述

在末尾添加,视情况而定

export PATH="/home/cheng/user/gcc-aarch64-linux-gnu/bin:$PATH"

重启让环境变量生效,或者

reboot

source  /etc/profile

查看是否安装成功

aarch64-linux-gnu-gcc -v

在这里插入图片描述

二、编译QT库

1.先去网站下载Qt的资源包

https://download.qt.io/archive/qt/5.9/5.9.0/single/

本次以5.9.0版本为主

2.解压

 tar -xvf qt-everywhere-opensource-src-5.9.0.tar.xz

在这里插入图片描述

3.开始移植:

1、修改qmake.conf文件,如下:

gedit qt-everywhere-opensource-src-5.9.0/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_RELEASE += -O2 -march=armv8-a                                                                                                                                                              
 QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a
   
 # modifications to g++.conf
 QMAKE_CC                = aarch64-linux-gnu-gcc
 QMAKE_CXX               = aarch64-linux-gnu-g++
 QMAKE_LINK              = aarch64-linux-gnu-g++
 QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++
   
 # modifications to linux.conf
 QMAKE_AR                = aarch64-linux-gnu-ar cqs
 QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
 QMAKE_NM                = aarch64-linux-gnu-nm -P
 QMAKE_STRIP             = aarch64-linux-gnu-strip
 load(qt_config)

创建一个脚本文件

touch qt_config.sh
sudo chmod 777 qt_config.sh
gedit qtconfig.sh

输入以下内容:(具体 .configure 配置详解请参考链接:https://blog.csdn.net/xi_gua_gua/article/details/53413930)

  #!/bin/sh  
 ./configure -prefix /opt/qt-5.9.0orangepizero2 \
 -opensource \
 -release \
 -no-pch \
 -confirm-license \
 -xplatform linux-arm-gnueabi-g++ \
 -shared \
 -qt-zlib \
 -no-iconv \
 -no-gif \
 -qt-libjpeg \
 -no-opengl \
 -no-cups \
 -no-glib \
 -no-dbus \
 -no-rpath \
 -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
 -no-avx  \-nomake tools \
 -qreal float \
 -qt-libpng \
 -no-compile-examples \
 -skip qtdeclarative \
 -no-openssl                                                                                                                                                                                           

-prefix /opt/qt-5.9.0orangepizero2 是编译后的安装目录。

如果运气好的话,一次编译就能过

在这里插入图片描述

4.编译:

make

编译成功
在这里插入图片描述

5.安装:

sudo make install

在这里插入图片描述
可以看到在/opt目录已经有了qt的内容

在这里插入图片描述

三. 安装QT

在里默认已经在虚拟机的Ubuntu上安装好了qt

1.配置QT

1.打开qt

在这里插入图片描述

2.点击 工具-选项-Kits-编译器

在这里插入图片描述

3.在编译器的Manual中添加GCC和C++路径为交叉编译工具的路径

交叉编译器的路径一开始我们就已经放好了

我放在了

/home/cheng/user/gcc-aarch64-linux-gnu

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

然后Apply一下

4.在Qt Versions中添加qmake为编译好的qt目录

在这里插入图片描述

5.构建套件Kit设置

在这里插入图片描述
注意c和c++的编译器设置

在这里插入图片描述
Qt version 这里选择前几部添加的 Qt5.9的设置
在这里插入图片描述
然后Apply-ok就可以了

2.编译Qt任意例子

第一个例子

/opt/qt-5.9.0orangepizero2/examples/widgets/mainwindows/mainwindow

在这里插入图片描述

第二个例子

/opt/qt-5.9.0orangepizero2/examples/widgets/widgets/stylesheet

在这里插入图片描述

都是只编译,不运行,运行也没用,没有特定环境,会运行失败

3.使用打包命令打包程序上传到OrangePi

程序打包上传到OrangePiZero2板子上,我把它放在了/home目录里面

在这里插入图片描述
把目录的权限改成板子上的用户和用户组

配置OrangePi PC2环境:

sudo vim /etc/profile

在最下边加入一下内容:

export QTDIR=/home/qt-5.9.0orangepizero2 #上边让你记住的路径
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins/ 
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

让环境变量生效

source /etc/profile

cd 到第一个例子所在目录

/home/qt-5.9.0orangepizero2/examples/widgets/mainwindows/mainwindow
chmod +x mainwindow

输入

./mainwindow -platform linuxfb

4.成果

可以看到板子上已经成功运行第一个列子

请添加图片描述

请添加图片描述
第二个例子

/home/qt-5.9.0orangepizero2/examples/widge/widgets/stylesheet
chmod +x stylesheet

输入

./stylesheet -platform linuxfb

请添加图片描述

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
请添加图片描述

运行过程中出现以下情况
而且打印界面报错:

在这里插入图片描述
这个是说找不到这个/home/qt-5.9.0orangepizero2/lib/fonts.
重新安装一下字体

sudo apt install ttf-wqy-zenhei

查看字体所在目录

fc-list :lang=zh

在这里插入图片描述
出现了一大堆

自己可以选择使用

我使用的是

/usr/share/fonts/truetype/wqy/
//该目录下有wqy-zenhei.ttc字体文件

在这里插入图片描述
修改一下profile文件

sudo vim /etc/profile

修改如图所示,把指定字体目录添加在这里插入图片描述

然后重启板子

就发现以上的错误消失了


总结

主要介绍了如何在香橙派Zero2上移植QT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jQuery 查找方法

文章目录jQuery 查找方法查找祖先元素parent()parents()parentsUntil()查找后代元素children()find()contents()向前查找兄弟元素prev()prevAll()prevUnitl()向后查找兄弟元素next()nextAll()nextUntil()查找所有兄弟元素siblings()jQuery 查找方法 查找祖先元素查找后代元素向…

年度创新力十强,热点领域重要力量,典型案例报告入选!美创再获ISC安全百强多项殊荣

12月21日,数字安全界“奥斯卡”—ISC 2022数字安全创新能力百强(简称“创新百强”)重磅揭晓,本届评选由ISC平台发起,联合赛迪顾问、数世咨询、数说安全、看雪、安在等网络安全行业权威机构、媒体共同开启评选&#xff…

web开发前基础知识补充

什么是URL? URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址; 互联网上的每个文件都有一个唯一的URL; 基本URL包含模式(或称协议&#xff0…

Kafka使用MirrorMaker同步数据的两种方式

1.前言 MirrorMaker 是 Kafka官方提供的跨数据中心的流数据同步方案。原理是通过从 原始kafka集群消费消息,然后把消息发送到 目标kafka集群。操作简单,只要通过简单的 consumer配置和 producer配置,然后启动 Mirror,就可以实现准…

不喜欢现在的工作,如何成功转行?

对现有行业职业公司不满、不喜欢,感觉此路不通,想换个跑道再战! 我想说,请先冷静一下。 我有两个认识的人,一个成功转行,另一个失败。后面会有我的分析~~ 我的一位女性朋友A,小公司里工作近1…

00后的他为何能年薪30w,转行真的很难吗?

网上有很多人经常在讨论转行,有的人说转行很难,有的却说不难,到底是怎样呢?我来说一个我身边发生的这么一个事实吧! 我之前接触过一个00后,他不同于别人,网上大多说00后是看老板不爽就直接不干…

unidbg入门级案例-某航空app_hnairSign分析

今天要分析的是某航空app,版本号是8.19.0,分析的样本在文章底部会提供,这次我们要借用unidbg 来辅助进行算法还原。 有关unidbg的介绍笔者就不做过多的描述,大家可自行百度查询。 该样本的so比较简单,但重点是记录分析…

多标签分类怎么做?(Python)

一、基本介绍 首先简单介绍下,多标签分类与多分类、多任务学习的关系: 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如&#xff1…

electron:获取MAC地址

一、背景 当我们需要用户“使用指定设备”访问程序的时候,我们需要获取用户设备的固定的id,设备id用户id实现业务需求,这个所谓的id就是MAC地址。 对于其他方法: uuid:uuid是一个唯一的字符串,可以存放到…

深度融合钉钉PaaS,授客学堂助力企业实现培训数字化

方案简介 授客学堂将企业培训领域的经验与钉钉开放能力深度融合,通过集成钉钉人事一体、酷应用、IM底座、待办等多种开放能力,实现学员培训数据实时互通,为客户提供更新更酷的能力,高效解决企业培训的数字化服务。 方案场景 在…

tensorflow feature_columns

总结来说: feature_column定义了一种数据预处理的方式,可以看作是一种格式,指定了key,用于后续读取输入流中对应列的数据feature_column不是tensor,所以如果在下一步应用到模型中是需要tensor,还需要通过f…

非互联网人士如何转行互联网?

结论是,具备互联网式的做事思维积累互联网项目经验。我靠着这个方法从一名传统销售顺利转行,(之前没有任何互联网工作经验)入职了一家互联网公司做用户运营,半年前跳槽成为一个4人运营小团队的leader。 在分享我自身的…

我国丁辛醇行业现状:上游丙烯供给充足 下游需求下滑 市场出现高差价现象

根据观研报告网发布的《中国丁辛醇行业发展深度分析与投资前景研究报告(2022-2029年)》显示,丁辛醇是一种丁醇和辛醇合成的有机物,无色透明、易燃的油状液体,具有特殊的气味,能与水及多种化合物形成共沸物&…

服务器IPMI(BMC)装机

将网线连接服务器的控制口与PC,服务器的控制口默认IP为192.168.100.100,网关默认为192.168.100.1,将PC的IP修改为与服务器控制口相同网段。打开浏览器,输入https://19168.100.100,进入IPMI登录界面。账号密码需要找运维…

Apache Airflow Hive Provider <5.0.0 存在操作系统命令注入漏洞

漏洞描述 Apache Airflow 是一个用于以编程方式创作、安排和监控工作流平台。Apache Airflow Hive Provider 是一个使用 SQL 读取、写入和管理分布式存储中的大型数据集的工具包。 Apache Airflow Hive Provider 在 5.0.0 之前的版本中由于对airflow/providers/apache/hive/h…

Stm32标准库函数6——f103 PWM 电调(50Hz)

#include "stm32f10x.h" #include "delay.h" TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; u16 Ppm; /************************************************* 函数: void RCC_Configuration(void) 功能: 配…

D. Friends and Subsequences Codeforces Round #361 (Div. 2)RMQ+二分 单调队列

题目传送门 题意为 给定两个长度为n的数组,设为a数组和b数组,需要找到所有可能的区间中,a数组的最大值等于b数组的最小值的个数。 1:RMQ 二分 RMQ 能找到一个数组在任意区间的最大值或者最小值,只需要在O(n)的时间…

【Java基础知识复盘】HashMap篇——持续更新中

本人知识复盘系列的博客并非全部原创,大部分摘自网络,只是为了记录在自己的博客方便查阅,往后也会陆续在本篇博客更新本人查阅到的新的知识点,望悉知! HashMap 概述 HashMap 是一个散列表,它存储的内容是…

hashMap相关

文章目录HashMapHashMap介绍HashMap在 JDK1.7和 JDK1.8中的区别JDK1.7中HashMap头插法死循环的原因HashMap的底层原理HashMap的扩容机制解决Hash冲突的方法为什么在解决hash冲突的时候选择先用链表,再转红黑树?HashMap为什么线程不安全一般用什么作为HashMap的key?…

程序员需要达到什么水平才能顺利拿到 20k 无压力?

很有趣的是,在程序员身上,我看到了最明显,也最有趣的贫富差距。 根据2022最新版大厂新入职员工职级对应表,大厂技术线的员工轻而易举地拿到了20w的水平,而只要往上够一够,30w也不是什么难事。 然而&#xf…