Ubuntu QT 交叉编译环境搭建

文章目录

  • 下载安装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 = sublibQT_QPA_DEFAULT_PLATFORM = linux
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7include(../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 = sublibQT_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=hardinclude(../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.mzph.cn/diannao/56316.shtml

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

相关文章

linux下位机出现使用TCP socket为0的问题

问题现象:下位机做TCP服务器,上位机来连接下位机的TCP服务,中间会有主动断开(上位机主动关闭socket)和异常断开(网线断开)的情况,出现异常的时候,上位机连接下位机的TCP …

cocos中Sprite的填充模式

做进度条效果会用到Sprite的填充模式: cocoscreator教程:制作进度条_哔哩哔哩_bilibili

对接优惠折扣影票接口有什么好处?

对接电影票接口可以为开发者、商家和用户提供多种好处,以下是一些主要优势: 便捷性:用户可以直接在应用程序或网站上查询电影信息、选择座位和购票,无需离开平台即可完成整个购票流程。 提高用户粘性:为用户提供一站式…

chrome清除https状态

莫名其妙的http跳转到https的url了。 解决办法 浏览器地址栏输入:chrome://net-internals/#hsts 输入你需要删除的域名即可!!!

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态,对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码,发现web-view是给绝对定…

静态变量、变量作用域、命名空间

静态变量 静态变量一般位于程序全局data区,只是编程语言根据它所在的scope做语言级别访问限制。 静态变量和全局变量 可以在C语言一个函数中定义static变量,并比较和全局变量的地址差异。 C系语言使用static关键字标示静态变量。 PHP使用大写的STATIC关键…

Unity3D 玩家攻击伤害计算详解

在游戏中,玩家攻击伤害计算是一个非常重要的功能,它决定了游戏中不同角色之间的战斗结果。本文将详细介绍Unity3D中玩家攻击伤害计算的实现方法,包括技术细节和代码实现。 对惹,这里有一个游戏开发交流小组,大家可以点…

影刀RPA实战:操作Mysql数据库

1.摘要 影刀RPA(Robotic Process Automation)是一种软件自动化工具,它可以模拟人类用户执行各种重复性任务,其中包括对数据库的操作。 我们可以使用软件自动化指令,通过获取数据库窗口对象来操作数据库,也…

Java项目:157 基于springboot技术的美食烹饪互动平台的设计与实现(含论文+说明文档)

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本知识管理系统有管理员和用户两个角色 管理员权限操作的功能包括管理美食,对美食留言进行回复,管理美食知识信息&…

为什么在 Vue 中处理 Excel 文件

1. 引言:为什么在 Vue 中处理 Excel 文件 在现代 web 应用中,数据展示和处理是常见的需求,尤其在业务系统中,Excel 文件作为一种常用的数据存储和传输格式,经常需要被处理和展示。在 Vue 应用中,使用第三方…

深入解析 Go 语言接口:多接口实现与接口组合的实际应用

文章目录 一、引言二、一个类型实现多个接口1. 定义多个接口2. 类型实现多个接口3. 使用多个接口 三、接口的组合1. 接口嵌套2. 实现复合接口 四、实际开发中的应用场景1. 多态与模块化设计2. 松耦合系统设计3. 测试与依赖注入4. 事件驱动架构中的应用 五、小结 一、引言 在 G…

C++ 算法学习——1.3 双向广度优先搜索

双向广度优先搜索算法步骤: 初始化: 从起始节点开始,分别初始化两个队列 q_forward 和 q_backward。将起始节点分别放入这两个队列中。初始化两个集合 visited_forward 和 visited_backward 用于记录已访问的节点。 循环: 在循环中…

安装和配置k8s可视化UI界面dashboard-1.20.6

安装和配置k8s可视化UI界面dashboard-1.20.6 1.环境规划2.初始化服务器1)配置主机名2)设置IP为静态IP3)关闭selinux4)配置主机hosts文件5)配置服务器之间免密登录6)关闭交换分区swap,提升性能7&…

2024入门测参考答案(c语言版)

先自己看代码思考,不理解的地方可以截图私聊…… 7-1 祝福祖国! 这是一个编程题模板。 2024年即将到来,作为一名大学生,为了表达在新的一年里,对祖国的祝福,请编写程序输出祝福语:在新的一年…

配置WSGI 服务器(Gunicorn)和Nginx 反向代理服务器部署Flask项目

部署 Flask 项目涉及到多个步骤,包括环境设置、依赖管理、配置、Web 服务器配置、数据库管理等。下面是一个详细的部署指南,假设你使用的是 Linux 系统(如 Ubuntu)。 前三个步骤教你如何在python虚拟环境下搭建项目并给出项目结构…

QT QML 练习8-Simple Transformations

简单的转换(Simple Transformations) 转换操作改变了一个对象的几何状态。QML元素对象通常能够被平移,旋转,缩放。下面我们将讲解这些简单的操作和一些更高级的用法。 我们先从一个简单的转换开始。用下面的场景作为我们学习的开始…

Qt- QSS风格选择器常用属性选择器样式表盒子

1. 风格设置 Qt 提供了 3 种整体风格,使用 QStyleFactory::keys() 来获取 (windowsvista 、Windows 、Fusion) 可以在 main.cpp 中调用 setStyle 方法对应用程序进行全局风格的设置 int main(int argc, char *argv[]) {QApplication a(arg…

Redis协议详解及其异步应用

目录 一、Redis Pipeline(管道)概述优点使用场景工作原理Pipeline 的基本操作步骤C 示例(使用 [hiredis](https://github.com/redis/hiredis) 库) 二、Redis 事务概述事务的前提事务特征(ACID 分析)WATCH 命…

用Python实现图片转ASCII艺术:图像处理与字符艺术的完美结合

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 ASCII艺术是一种通过字符来表现图像的艺术形式,最早用于早期计算机显示器,它仅支持字符显示。如今,尽管图像分辨率和显示技术得到了极大的提升,ASCII艺术作为一种复古而别具一格的图像表现形式,仍然受到许多…

驱动开发系列21 - 编译内核模块的Makefile解释

一:内核模块Makefile #这一行定义了要编译的内核模块目标文件。obj-m表示目标模块对象文件(.o文件), #并指定了两个模块源文件:helloworld-params.c 和 helloworld.c。最终会生成这 #这两个.c文件的.o对象文件。 obj-m := helloworld-params.o helloworld.o#这行定义了内核…