Ubuntu QT 交叉编译环境搭建

news2024/10/12 5:55:01

文章目录

  • 下载安装qtCreator
    • not a valid identifier 的错误
  • 安装g++
  • 下载并安装交叉编译器
    • 下载交叉编译器
    • 安装交叉编译器
  • 下载编译 ARM 的Qt平台源码
    • 配置arm的QT平台

下载安装qtCreator

去QT下载官网下载对应需要的QT软件。

这里下载5.12.96版本的
在这里插入图片描述

改变安装包权限,然后,sudo运行安装包。
在这里插入图片描述

安装在opt目录下
在这里插入图片描述
安装完成。到安装路径QtCreator的bin目录中 找到应用的开启程序:

在这里插入图片描述
后台运行QtCreator:

/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh &

在这里插入图片描述

not a valid identifier 的错误

今天上午搭建交叉编译环境,安装arm-linux-gcc时,source /etc/profile的时候,老是跳出“路径 not a valid identifier”,检查了半天也不知道什么原因,后来在网上看到有人说是中英文的问题,我回头检查一看,果然,添加这句“export PATH=$PATH:/usr/local/arm/4.4.3/bin”时,因为是直接复制,黏贴过来的时候,“=”是中文格式,然后我赶紧把里面的符号重新再英文环境下打一遍,果然,安装顺利。顺便附上安装过程:

安装g++

下载并安装交叉编译器

下载交叉编译器

到linaro交叉编译器官网上去下载交叉编译器

在这里插入图片描述
挑选自己需要的交叉编译器
在这里插入图片描述
在这里插入图片描述

点击下载,下载速度有点慢,可以找个梯子去下载,会快速很多。


安装交叉编译器

交叉编译器解压缩到/usr/local/arm/目录中。

然后在/etc/profile添加交叉编译器的环境变量。

重启系统查看是否能够显示交叉编译器版本以确定安装成功。

下载编译 ARM 的Qt平台源码

我们可以在 Qt 下载地址 https://download.qt.io/找到 https://download.qt.io/archive/qt/5.12/5.12.9/si
ngle/,进入下载页面如下。

tslib库的安装,

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

上面的-prefix=/home/lonn/tslib-1.21/arm-tslib该为自己的目录,需要创建一个armtslib的文件夹

配置arm的QT平台

要是绝对路径

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

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linux
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7

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

# modifications to g++.conf
QMAKE_CC                = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
QMAKE_CXX               = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++
QMAKE_LINK              = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-objcopy
QMAKE_NM                = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-nm -P
QMAKE_STRIP             = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-strip
load(qt_config)
#!/bin/sh

./configure -prefix /home/lonn/Desktop/qt-everywhere-src-5.12.9/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/lonn/tslib-1.21/arm-tslib/include \
-L/home/lonn/tslib-1.21/arm-tslib/lib \
-recheck-all

qmake.conf

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

MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib

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


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

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

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

在这里插入图片描述

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

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

相关文章

k8s芜湖

一、k8s简介及部署方法 1、k8s简介 kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能: 自我修复:一旦某一…

DBO-BP回归预测 | MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测

回归预测 | MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测基本介绍程序设计参考资料基本介绍 MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测。 蜣螂优化群优…

react理念(二)

react-fiber 虚拟dom在react16中称为fiber。 起源 在react15之前,协调器采用递归的方式来创建dom,递归的过程是不能中断的,如果组件书的层级很深,递归会占用线程很多时间,造成卡顿。为了解决这个问题,re…

统一流程引擎如何具体实现对多系统业务流程的整合?

在信息化时代,企业和组织通常会使用多个业务系统来满足不同的业务需求。然而,这些分散的业务系统往往会导致业务流程的碎片化,降低工作效率。统一流程引擎的出现为解决这一问题提供了有效的途径。它能够整合多系统的业务流程,实现…

【Next.js 入门教程系列】03-路由与跳转

原文链接 CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话, 给我的库点个star,关注一下吧 上一篇【Next.js 入门教程系列】02-风格化 路由与跳转 本篇包括以下内容: Define dynamic routesAccess route and…

构建高效作业管理平台:Spring Boot师生协作评审系统

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

23年408数据结构

第一题: 解析: 第一点,我们要知道顺序存储的特点:优点就是随用随取,就是你想要查询第几个元素可以直接查询出来,时间复杂度就是O(1),缺点就是不适合删除和插入,因为每次删除和插入一…

Pyramid-Flow – 北大、快手、北邮联合开源的视频生成模型

Pyramid-Flow是什么 Pyramid-Flow是一种先进的视频生成模型,由北京大学、快手科技和北京邮电大学的研究人员联合推出。模型根据文本提示生成长达10秒、分辨率高达1280768、帧率24帧每秒的高清视频。Pyramid-Flow的核心为创新的金字塔流匹配算法,算法将视…

为您的人工智能数据提供类似 Git 的版本管理功能

您过去肯定有过版本控制代码。但是,您是否对数据进行了版本控制?您是否曾经想过与不同的团队协作处理大量数据,而无需提交大量数据?想象一下,使用类似 git 的命令来运行类似存储库的生态系统,在该生态系统中…

模型案例:| SenseCraft Al平台模型训练与部署

导读 2023年以ChatGPT为代表的大语言模型横空出世,它的出现标志着自然语言处理领域取得了重大突破。它在文本生成、对话系统和语言理解等方面展现出了强大的能力,为人工智能技术的发展开辟了新的可能性。同时,人工智能技术正在进入各种应用领…

关于Transformer的相关问题

🎁👉点击进入文心快码 Baidu Comate 官网,体验智能编码之旅,还有超多福利!🎁 🔍【大厂面试真题】系列,带你攻克大厂面试真题,秒变offer收割机! ❓今日问题&am…

MacOS 同时配置github、gitee和gitlab密钥

MacOS 同时配置github、gitee和gitlab密钥 1 在终端中新建 ~/.ssh目录 1.1 生成GitHub、Gitee和Gitlab的SSH密钥对 ssh-keygen -t ed25519 -C "xxxxxxxxxxx.com" -f ~/.ssh/id_ed25519_gitee ssh-keygen -t ed25519 -C "xxxxxxxxxxx.com" -f ~/.ssh/id_…

mac电脑卸载软件在哪里?苹果电脑卸载软件的正确步骤

如今,越来越多的人选择使用Mac电脑来办公,然而,随着使用时间的增长,Mac电脑上安装的软件越来越多,硬盘空间逐渐被占用,电脑性能也可能因此受到影响。许多用户在尝试卸载不再需要的软件时,发现直…

【JVM】原理篇

1 栈上的数据存储 在Java中有8大基本数据类型: 这里的内存占用,指的是堆上或者数组中内存分配的空间大小,栈上的实现更加复杂。 以基础篇的这段代码为例: Java中的8大数据类型在虚拟机中的实现: boolean、byte、char、…

【重学 MySQL】六十四、主键约束的使用

【重学 MySQL】六十四、主键约束的使用 主键约束的特性主键约束的创建创建单列主键创建联合主键在表创建后添加主键 主键约束的删除主键约束的特点主键约束与自增长约束注意事项 在MySQL中,主键约束(PRIMARY KEY)用于唯一标识表中的每一行数据…

AOT漫谈专题(第一篇): 如何调试C# AOT程序

一:背景 1. 讲故事 上个月接到了二个C# AOT程序的故障分析,发现如今的C# AOT程序也开始在各个领域开枝散叶了,这是一件非常好的事情,本着对这类程序有一个专业的维修态度,开一个系列好好聊一聊吧,当然我这…

互动式教育技术:Spring Boot师生共评作业管理系统

3系统分析 3.1可行性分析 通过对本师生共评的作业管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本师生共评的作业管理系统采用JAVA作为开发语言&…

uniapp引入ThorUI的方法

1、下载文件 2、复制相应的文件除了pages 3、往项目中复制即可 4、引入即可实现 5、添加easycome自动引入

SpringBoot2核心功能-web开发

目录 一、简单功能分析1.1、静态资源访问1.2、欢迎页支持、自定义 Favicon 二、请求参数处理2.1、请求映射2.1.1、rest使用与原理2.1.2、请求映射原理 2.2、普通参数与基本注解2.2.1、注解2.2.2、Servlet API:2.2.3、复杂参数: 三、拦截器四、Web原生组件…

STM32之CAN外设

相信大家在学习STM32系列的单片机时,在翻阅芯片的数据手册时,都会看到这么一个寄存器外设——CAN外设寄存器。那么,大家知道这个外设的工作原理以及该如何使用吗?这节的内容将会详细介绍STM32上的CAN外设,文章结尾附有…