linux上交叉编译qt库

news2024/9/21 0:39:35

linux上交叉编译qt库

Qt程序从X86平台Linux移植到ARM平台Linux需要做什么

1.在ubuntu上使用qt的源码交叉编译出Qt库

2.将编译好的库拷贝到开发板上并设置相应的环境变量(库路径啥的)

前两步一劳永逸,做一次就行

3.X86上写好程序代码,通过交叉工具链进行程序的交叉编译,(动态)链接交叉编译的Qt库,或者厂商提供的Qt-sdk(友善),总之不能直接用开发板文件系统里的Qt库,那个是在arm上运行的

4.程序拷贝到开发板上运行

qt源码下载

https://blog.csdn.net/Mculover666/article/details/126307077?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169876081416800185832737%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169876081416800185832737&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-8-126307077-null-null.142^v96^pc_search_result_base8&utm_term=%E9%87%8E%E7%81%AB%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91qt&spm=1018.2226.3001.4187
wget https://download.qt.io/archive/qt/5.12/5.12.9/single/qt-everywhere-src-5.12.9.tar.xz

image-20231101091817411

下载得到的qt源码包

image-20231101092107232

使用下面命令进行解压

xz -d qt-everywhere-src-5.12.9.tar.xz

image-20231101092452624

tar -xf qt-everywhere-src-5.12.9.tar

image-20231101092844986

进入解压后的目录如下:

image-20231101093303229

修改配置文件qmake.conf

修改qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf文件

image-20231101103455408

使用vim编辑器打开qmake.conf

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

打开qmake.conf文件如下图:

image-20231101104353417

要添加的内容如下:

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

生成makefile

由于要输入的命令比较多,创建一个shell脚本,把命令放入脚本文件中,创建一个autoconfigure.sh的脚本文件

touch autoconfigure.sh

image-20231101104908913

将要执行的命令,拷贝到autoconfigure.sh文件中。这里注意第3行是指定交叉编译后要安装的目录,根据自己情况进行调整。

#!/bin/sh
./configure -v \
-prefix /home/cwz/qt_build/qt-everywhere-src-5.12.9/armqt5.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/opt/tslib1.4/include \
-L/opt/tslib1.4/lib
exit

给脚本autoconfigure.sh添加可执行权限

 sudo chmod 777 autoconfigure.sh 

image-20231101144629808

执行脚本

按照下面命令,执行脚本。

./autoconfigure.sh 

image-20231101151658890

执行完上述脚本后,会生成一个makefile文件,接下来执行make命令,

make

然后接着执行make install命令

make install

出现下面的错误,一种是没权限,这里我准备加上sudo,还有一个缺少python

image-20231101205011370

错误sh: 1: python: not found Project ERROR: Building QtQml requires Python.

解决:

安装Python资源包

sudo apt install python3.8

2.找到资源包的位置

which python3

image-20231101205447448

将其拷贝到/usr/bin/python目录下

sudo cp -r /usr/bin/python3 /usr/bin/python

解决了上述的错误后,重新执行make install命令。就可以了,会需要很长一段时间的。

编译完成后,在/home/cwz/qt_build/qt-everywhere-src-5.12.9/armqt5.12.9目录(这个目录是我们在autoconfigure.sh脚本中第3行指定的安装目录)下生成的文件如下图:

image-20231120145516349
至此,qt库的交叉编译就完成了。

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

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

相关文章

纯CSS动态渐变文本特效

如图所示,这是一个炫酷的文本渐变效果,如同冰岛的极光一般。本次的文章让我们逐步分解代码,了解其实现原理。 基于以上动图效果可以分析以下是本次动效实现的主要几点: 文本中有多个颜色的动画每个颜色显示的半径不同&#xff0…

适合上班族考的证书 - PMP证书

PMP证书是一种专业的项目管理证书,适合上班族考取。随着社会的发展和竞争的加剧,越来越多的企业开始注重项目管理能力的培养和提升。而PMP证书正是国际上公认的项目管理领域的权威认证,具有很高的知名度和影响力。 首先,PMP证书对…

成都优优聚美团代运营:塑造卓越优势,引领电商新时代

在当今这个数字化时代,美团作为中国最大的本地生活服务平台之一,正在为消费者和商家搭建一个无缝链接的桥梁。而在成都,有一家名为优优聚美团代运营的公司,他们凭借着专业的技能和高效的服务,成为了美团平台上的佼佼者…

越南MIC新规针对ICT和ITE产品电气授权标准变更

从2024年1月1日起,所有ICT和ITE产品(如台式电脑、笔记本电脑、平板电脑、DVB-T2电视/机顶盒、DECT电话等)都需要越南MIC授权的电气安全标准——QCVN132:2022。 目前MIC仍未最终确定要求,因为这与另一个监管机构存在冲突。所以目前他们可以接受ISO 17025的…

同创永益联合红帽打造一站式数字韧性解决方案

随着AI技术的快速兴起,IT技术已成为推动业务持续增长的重要驱动力,这要求企业不断尝试新事物,改变固有流程,加强IT技术与业务的合作,同时提升数字韧性能力,以实现业务目标。10月26日,红帽2023中…

UEC++ day6

简易战斗系统 删除替换父类组件 现在需要添加剑的组件,但是一般来说附着到蒙皮骨骼的东西,也是蒙皮骨骼,所以我们可以新建一个类重新编写,也可以直接继承Interoperable类然后不管UStaticMeshComponent这个组件,新建U…

HarmonyOS开发(四):应用程序入口UIAbility

1、UIAbility概述 UIAbility 一种包含用户界面的应用组件用于与用户进行交互系统调度的单元为应用提供窗口在其中绘制界同 注:每一个UIAbility实例,都对应一个最近任务列表中的任务。 一个应用可以有一个UIAbility也可以有多个UIAbility。 如一般的…

微服务学习|Nacos配置管理:统一配置管理、配置热更新、配置共享、搭建Nacos集群

统一配置管理 在微服务当中,提供一个配置中心来将一些配置提取出来,进行统一的使用,Nacos既可以充当注册中心,也提供配置中心的功能。 1.在Nacos中添加配置文件 在Nacos控制台,我们可以在配置管理中,添加…

golang学习笔记——使用结构

使用结构 有时,你需要在一个结构中表示字段的集合。 例如,要编写工资核算程序时,需要使用员工数据结构。 在 Go 中,可使用结构将可能构成记录的不同字段组合在一起。 Go 中的结构也是一种数据结构,它可包含零个或多个…

盛元广通开放实训室管理系统2.0

开放实训室管理系统是一种基于网络和数据库的实训室信息管理系统,旨在提高实训室的管理水平,实现实训资源的优化配置和高效利用。该系统通常包括用户管理、设备管理、课程管理、考核管理等功能模块,能够实现实训室的预约、设备借用、课程安排…

一周互联网简讯 | 本周互联网发生了啥?(第3期)

1.百度T7跳槽字节3-1,总包145万,压力太大想降级 硕士毕业工作10年,一百度T7大头兵发文称,自己最近拿到字节3-1的offer,年包从现有的110万涨30%到145万。但是担心去字节后因为定的职级高需要带人,压力会很大…

2023年11月界面制作软件合集,新手也能学会!

在今天的互联网时代,有各种界面制作软件可供选择。这些软件可以帮助新手和专业人士创建精美且高效的界面设计。从最基础的拖拽操作到复杂的编程接口,不同的软件提供了一系列的功能和特性,满足了各种需求。我们将在本文中探讨8大神器&#xff…

『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统

『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统 授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 前…

德思特分享丨一文带你了解ADC测试参数有哪些?

来源:德思特测量测试 德思特分享丨一文带你了解ADC测试参数有哪些? 一文带你了解ADC测试参数有哪些 模数转换器(ADC)是数字电子系统中重要组成部分,用于捕获外部世界的模拟信号,如声音、图像、温度、压力…

SIMULIA|Abaqus 2022x新功能介绍第三弹

Abaqus 线性分析的功能增强 模态分析中增加connector单元的输出 模态线性动力学分析中增加下列Connector单元的输出,无需指定* connector MOTION即可实现:AXIAL,BUSHING,CARDAN,CARTESIAN和ROTATION。 而且改进了CT…

高防CDN有什么作用?

分布式拒绝服务攻击(DDoS攻击)是一种针对目标系统的恶意网络攻击行为,DDoS攻击经常会导致被攻击者的业务无法正常访问,也就是所谓的拒绝服务。 常见的DDoS攻击包括以下几类: 网络层攻击:比较典型的攻击类…

python中,axis=0,axis=1,axis=2的理解【对于按待定轴求和,axis=‘x’的理解】

一、axis 1.假设我们有一个5行4列的矩阵,见下图所示。 这个矩阵的shape:[5][4],维度是2,axis:0,1,按照行,轴为0,按照列轴为1。 当我们按照axis0,求sum时:我们得到的shap…

网站被攻击怎么办?

网站被大流量攻击会造成服务器资源耗尽,一直到宕机崩溃,网站无法访问甚至被机房停用,时间长就导致网站排名下降,所以必需及时处理。下面跟大家分享服务器被大流量攻击怎么办?服务器攻击防护如何做? 一、服…

win10无损升级到win11

win10无损升级到win11,保留文件和程序。下面就是升级方法。 1,下载win11升级助手 https://download.microsoft.com/download/5/4/c/54c22b82-d0cd-4e34-9a06-b75823a8aede/Windows11InstallationAssistant.exe 2,启动助手开始安装 安装时需…

dgl的cuda版本安装+对应torch的cuda版本安装

优秀教程 1、pytorch 1.8.1 CUDA11.1 对应的DGL版本是0.6.1(linux、windows也适用) 2、CUDApytorchDGL安装 3、安装dgl-cuda 4、torch 安装备忘录 dgl文件下载 https://anaconda.org/dglteam/repo可以将下面网址中的cu111改成你想要的版本&#xff0…