Linux x86_64平台同时编译x86_64和arm64两个架构的Qt应用程序出现XRes库无法找到

news2024/11/23 15:08:16

一 背景

在ubuntu x86_64平台上需要同时编译x86_64和arm64两个架构的Qt应用程序。在实践过程中,发现XRes库只能安装在其中一个平台。

二 根因

安装amd64版本的XRes库会删除arm64版本的库,反之亦然。

  • 在安装amd64版本时,会删除arm64版本,这会导致缺失libXRes.so的符号链接
    在这里插入图片描述
    在这里插入图片描述
  • 在安装arm64版本时,会删除amd64版本,这会导致缺失libXRes.so的符号链接
    在这里插入图片描述
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/e411d8602c864e92acd6b60f9835e114.png在这里插入图片描述

三 解决办法

手动创建缺少的动态库符号链接,比如创建arm64版本的符号链接,如下

sudo ln -s /usr/lib/aarch64-linux-gnu/libXRes.so.1.0.0 /usr/lib/aarch64-linux-gnu/libXRes.so

四 知识点

如何在x86_64系统下安装多架构包,比如arm64, 已实现交叉编译:

  • 需要添加arm64架构,如下指令:
dpkg --print-foreign-architectures
    i386
sudo dpkg --add-architecture arm64
dpkg --print-foreign-architectures
    i386
    arm64
  • 更改sources.list,因为默认的源不支持arm64, 只支持x86_64

需要注意添加arch,如下:[arch=arm64]
给出清华大学源,如下:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb [arch=amd64] http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb [arch=arm64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb [arch=arm64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb [arch=arm64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse

deb [arch=arm64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse

# deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
# # deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
  • 执行更新:sudo apt-get update

以下给出在linux系统下开发图形应用程序一些常见的包,主要时x11相关的:

  • arm64版本
sudo apt-get -q -y install uuid-dev:arm64 libgl1-mesa-dev:arm64 libxcb-xkb-dev:arm64 freetds-dev:arm64 libfontenc-dev:arm64 libice-dev:arm64 libsm-dev:arm64 libxaw7-dev:arm64 libxt-dev:arm64 libxcomposite-dev:arm64 libxcursor-dev:arm64 libxi-dev:arm64 libxinerama-dev:arm64 libxkbfile-dev:arm64 libxmu-dev:arm64 libxmuu-dev:arm64 libxpm-dev:arm64 libxrandr-dev:arm64 libxrender-dev:arm64 libxres-dev:arm64 libxss-dev:arm64 libxtst-dev:arm64 libxv-dev:arm64 libxvmc-dev:arm64 libxcb-icccm4-dev:arm64 libxcb-image0-dev:arm64 libxcb-shm0-dev:arm64 libxcb-keysyms1-dev:arm64 libxcb-render-util0-dev:arm64 libxcb-xinerama0-dev:arm64 libxcb-util-dev:arm64 libxcb-shape0-dev:arm64 libxcb-randr0-dev:arm64 libxcb-xfixes0-dev:arm64 libxcb-sync-dev:arm64 libxcb-keysyms1-dev:arm64 libxkbcommon-x11-dev:arm64 libsm-dev:arm64 libice-dev:arm64 libqt5x11extras5-dev:arm64  libxcb-xinput-dev:arm64
  • amd64版本
sudo apt-get -q -y install uuid-dev:amd64 libgl1-mesa-dev:amd64 libxcb-xkb-dev:amd64 freetds-dev:amd64 libfontenc-dev:amd64 libice-dev:amd64 libsm-dev:amd64 libxaw7-dev:amd64 libxt-dev:amd64 libxcomposite-dev:amd64 libxcursor-dev:amd64 libxi-dev:amd64 libxinerama-dev:amd64 libxkbfile-dev:amd64 libxmu-dev:amd64 libxmuu-dev:amd64 libxpm-dev:amd64 libxrandr-dev:amd64 libxrender-dev:amd64 libxres-dev:amd64 libxss-dev:amd64 libxtst-dev:amd64 libxv-dev:amd64 libxvmc-dev:amd64 libxcb-icccm4-dev:amd64 libxcb-image0-dev:amd64 libxcb-shm0-dev:amd64 libxcb-keysyms1-dev:amd64 libxcb-render-util0-dev:amd64 libxcb-xinerama0-dev:amd64 libxcb-util-dev:amd64 libxcb-shape0-dev:amd64 libxcb-randr0-dev:amd64 libxcb-xfixes0-dev:amd64 libxcb-sync-dev:amd64 libxcb-keysyms1-dev:amd64 libxkbcommon-x11-dev:amd64 libsm-dev:amd64 libice-dev:amd64 libqt5x11extras5-dev:amd64  libxcb-xinput-dev:amd64

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

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

相关文章

内部员工有没有在线帮助文档可以使用呢

当今企业中,内部员工的工作内容变得越来越复杂,需要不断学习新的知识和技能。在这种情况下,企业需要给员工提供一种便捷的在线帮助文档,使员工能够更加高效地完成工作任务。本文将介绍企业内部员工在线帮助文档的重要性以及如何建…

区块链如何助力价值互联网?这些专家有话说

6月13日,由开放原子开源基金会主办,XuperCore开源项目承办的2023开放原子全球开源峰会区块链分论坛在北京举办。来自区块链领域内的专家、行业代表汇聚一堂,分别以主题演讲、圆桌论坛等形式,阐述了全球区块链行业的新理念、新发展…

Opencv仿射函数getAffineTransform底层实现原理

推导 三角形ABC仿射成为三角形DEF的变换矩阵M 猜测矩阵M [ [a1,b1,c1], [a2,b2,c2] ] 仿射变换的数学联系 对于A点和D点 AX*a1AY*b1c1DX AX*a2AY*b2c1DY 对于B点和E点 BX*a1BY*b1c1EX BX*a2BY*b2c2EY 对于C点和F点 CX*a1CY*b1c1FX CX*a2CY*b2c2FY 求解 对以上数…

seqkit 两种拆分方法的比较

seqkit拆分fastq,fasta等文件有两种方式:split和split2, 二者的逻辑并不一样。 split 是将原文件拆分,写满第一个文件,再写第二个文件 split2是将原文件的内容,挨个写到各个拆分文件里面去? 比…

拓尔微技术干货 | get 5个知识点,了解细分驱动技术

本期我们对步进电机驱动原理、五线的步进电机和四线的步进电机、2-2相励磁和1-2相励磁、步进电机驱动的优化方案、拓尔微TMI8150B细分驱动技术的原理进行详细的介绍,共分为5个知识点,全是技术干货,赶紧get下来~ ✔get 1:步进电机…

datax安装部署使用 windows

Datax在win10中的安装_windows安装datax_JMzz的博客-CSDN博客 DataX/userGuid.md at master alibaba/DataX GitHub 环境准备: 1.JDK(1.8以上,推荐1.8) 2.①Python(推荐Python2.7.X) ②Python(Python3.X.X的可以下载下面的安装包替换) python3.0需…

Docker安装——CentOS7.6(详细版)

ps:docker官网 在 CentOS 上安装 Docker 引擎 |官方文档 () 一、确定版本(必须是7以上版本) cat /etc/redhat-release 二、卸载旧版本(或者之前装过,没有安装过就不用管了) (root用…

OpenCV 项目开发实战--实现填充图像中的孔( Python / C++ ) 代码实现

文末附分别基于C++和python实现的相关测试代码下载链接 图 1. 左:原始的图像。中心:阈值和倒置。右:孔被填充。 在本教程中,我们将学习如何填充二值图像中的孔洞。考虑图 1 中左侧的图像。假设我们想要找到一个将硬币与背景分开的二进制掩码,如右图所示。在本教程中,包含…

2.0C++继承

C继承概述 C 中的继承是指一个类可以从另一个类中继承属性和方法,这个被继承的类称为基类或父类,继承它的类称为派生类或子类。 C三种继承 1、公有继承 public 在公有继承中,基类的公有成员和保护成员都可以被派生类访问,而基…

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

1、简介 在ROS2中自动导航使用Nav2来实现。 Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。 Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源; Nav…

【数字图像处理】2.几何变换

目录 2.1 仿射变换(二维) 2.2 投影变换(三维) 2.3 极坐标变换 2.3.1 将笛卡尔坐标转化为极坐标 2.3.2 将极坐标转换为笛卡尔坐标 2.3.3 利用极坐标变换对图像进行变换 几何变换:放大、缩小、旋转等,改…

[游戏开发]Unity中随机位置_在圆/椭圆/三角形/多边形/内随机一个点

[ 目录 ] 0. 前言1. 矩形内随机2. 圆形内随机3. 三角形内随机4. 多边形内随机(1)多边形分割为三角形(2)三角形面积计算(3)数据缓存(4)按权重随机(5)实现随机 …

理论【8】TCPUDP彻底搞懂了吗?

1 概述 对于TCP协议和UDP协议,大家应该都有所耳闻。TCP协议和UDP协议都工作在传输层,他们的目标都是在应用之间传输数据。我们常用的网络通信,比如浏览网页、查看邮件、电话通信等,都是通过这两种协议来进行数据传输的。 2 TCP…

面试---如何发现Redis热点Key,有哪些解决方案?

目录 热点问题概述热点问题的危害常见解决方案阿里云数据库解热点之道热点key的处理两种方案对比总结 热点问题概述 产生原因 热点问题产生的原因大致有以下两种: 用户消费的数据远大于生产的数据(热卖商品、热点新闻、热点评论、明星直播)…

【AI绘画】本地部署Stable Diffusion Web UI

近几年AI发展迅猛,今年更是大爆发,除了爆火的大模型ChatGPT以外,AI绘画也有很大的进步,目前,Stable Diffusion图像生成效果相当惊人,可以生成逼真的人像、风景、物品图片,还可以将图片转换为不同…

提示学习soft prompt浅尝,启发了p-tuing

一、前言 在高质量标注数据稀缺的工业界来说,少样本学习或者零样本学习的方法特别受欢迎,后面出现过一些少样本和零样本的方法,例如对比学习和prompt等,主流prompt的工作分为离散型和连续型模板。离散型主要还是插入bert特殊的tok…

分享AI绘画的方法

曾经,在一个神奇的编程国度里,住着一个名叫小花的程序员。小花喜欢创造和探索新奇的技术,她有一个惊人的能力:她能够根据文字生成相应的图片。这项技术让她成为了这个国度里的传奇人物。人们纷纷向她寻求帮助,希望能够…

flutter:网络请求、json数据转为Model

参考 老孟 flutter: 网络请求-dio http http 是一个可组合,基于Future的库,用于HTTP请求。该软件包包含高级功能和类,可轻松使用HTTP资源。它是多平台的,并且支持移动设备,台式机和浏览器。此软件包为官…

STM32F1x固件库函数学习笔记(一)

文章目录 一、基础知识1、什么是STM322、STM32诞生背景3、STM32分类4、STM32F1X系列命名规则5、STM32F103C8T6最小系统 二、STM32固件库1、初始固件库(1)51单片机的寄存器(2)STC8A通过库函数方式实现LED闪烁(3&#xf…

Spark入门(二)

2.3 Standalone模式 Standalone模式是Spark自带的资源调度引擎,构建一个由Master Worker构成的Spark集群,Spark运行在集群中。 这个Standalone区别于Hadoop的。这里的Standalone是指只用Spark来搭建一个集群,不需要借助其他框架。 2.3.1集…