ubuntu20遇到缺少qt4相关库的问题

news2024/11/28 10:34:59

最近需要做套接字通讯的工作,最好是有一个网络调试软件能够接受或者发送套接字,测试代码能够正常通讯。windows下有很多,但是linux下比较少,使用广泛的是下面这一款。在这里插入图片描述

1、安装

首先从网盘(链接: https://pan.baidu.com/s/1XLi3ta–yALHvvBhCKTJOQ?pwd=whx7 提取码: whx7 )下载软件,或者搜索ubuntu mNetAssist搜索下载。下载后通过sudo dpkg -i mNetAssist-release-amd64.deb安装,成功后会显示图标:
在这里插入图片描述

当我们打开这个软件会发现没有任何反应,实际上是因为缺少了相关的支持库。

2、排查

直接点击图标启动并不会显示报错及原因,需要通过命令行启动。上述软件被安装在/opt/目录下(这个目录下还安装了其他软件,如果其他软件也打不开或闪退等,也可以按这个方式来排查一下),进入/opt/mNetAssist/目录后,通过命令行./mNetAssist启动,发现报错了:

./mNetAssist: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory

QT4的框架在20.04及以后版本的主存储库已经删除了,老软件在新系统安装运行,缺失必要的依赖库,而依赖过时了,新系统不再支持安装,导致老软件运行不起。

实际上还不止缺少这个库,每次启动遇到缺少的就报错,显然只能解决一个排查一个,实际上我们也可以通过ldd ./mNetAssist命令来查看所有支持库的情况:

(base) ishyj@ishyj-XiaoXin-14-IRL8:/opt/mNetAssist$ ldd ./mNetAssist
	linux-vdso.so.1 (0x00007ffecafe9000)
	libQtGui.so.4 => not found
	libQtNetwork.so.4 => not found
	libQtCore.so.4 => not found
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007efda4fbc000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007efda4d43000)
	libaudio.so.2 => not found
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007efda4bfe000)
	......

可以看到缺少libQtGui.so.4、libQtNetwork.so.4、libQtCore.so.4、libaudio.so.2四个库

3.1 如果本地存在so文件

那么我们可以先查一下本地是否存在:ldconfig -p | grep libQtGui,如果存在则记住其所在目录,然后修改~/.bashrc, 将找到的库文件所在文件夹加入到环境变量:

# 打开bashrc
vim ~/.bashrc

# 最后面追加,path为上文找到的库的目录
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:path

# 退出vim后,更新,然后可以再次ldd查询这个库是否找到了
source ~/.bashrc

3.2 如何在 Ubuntu 中安装 Qt4 库

参考:如何在 Ubuntu 中安装 Qt4 库 20.04 [Ubuntu 22.04 更新]

在上面的参考中有ubuntu20和ubuntu22安装qt4库的方法,这里简要说一下ubuntu20安装qt4的步骤:

sudo add-apt-repository ppa:rock-core/qt4
sudo apt update

sudo apt install PACKAGE_NAME

缺少什么so文件,就install PACKAGE_NAME就可,当然库文件和对应的PACKAGE_NAME在Packages in “Qt4 for Ubuntu 20.04”可以查到。

3.3 上法不奏效

如【linux】ubuntu20.04 运行软件 提示找不到过时的库 libQtCore.so.4、libQtGui.so.4、libpng12.so.0文中第1节所讲,可能上面3.2节方法不会有效(至少我的libqt4-network按照3.2奏效了,但是libQtGui和libQtCore是按照3.3节方法实现的)

本节的方法实际上就是将qt4中对应的库文件复制到系统中。

3.2.1 打开ubuntu主储存库

打开vim /etc/apt/sources.list查询到http://security.ubuntu.com/ubuntu/,打开
该链接,依次进入pool'--'main'--'q/'--'qt4/-x11,找到libqtgui4_4.8.7+dfsg-7ubuntu1_amd64.deb下载(其他库为libqtcore4_4.8.7+dfsg-7ubuntu1_amd64.deblibqt4-network_4.8.7+dfsg-7ubuntu1_amd64.deb,libaudio没有找到是按3.2节的方法解决的)。下载的deb是可以直接安装的,但是因为ubuntu20存在qt5这个高版本,所以安装是要报错的。
在这里插入图片描述

下载的deb解压后,进入解压data.tar.xz,进入data/usr/lib,在x86_64-linux-gnu下就是一些库文件。现在在lib文件夹下打开终端:

# 修改x86_64-linux-gnu下所有文件权限
sudo chmod 777 x86_64-linux-gnu/*

# 移动到/usr/lib/qt4文件夹中
sudo cp -r x86_64-linux-gnu/ /usr/lib/qt4

然后可以通过ldd /opt/mNetAssist/mNetAssist看看这个库文件是否支持了。

其他几个库文件都是安装上面的流程以此复制到qt4文件夹中

参考

Ubuntu20.04 tcp调试工具mNetAssist安装
【linux】ubuntu20.04 运行软件 提示找不到过时的库 libQtCore.so.4、libQtGui.so.4、libpng12.so.0

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

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

相关文章

安装conda搭建python环境(保姆级教程)

目录 一、Anaconda简介二、Anaconda安装 2.1 Anaconda下载2.2 Anaconda安装2.3 配置环境变量 三、通过conda配置python环境 3.1 创建并激活虚拟环境3.2 管理虚拟环境 一、Anaconda简介 Anaconda 是专门为了方便使用 Python 进行数据科学研究而建立的一组软件包,…

【设计模式-08】Flyweight享元模式

简要说明 简要的理解:享元模式就是新建一个池(Pool),该池子(Pool)中有新建好的一堆对象,当需要使用时,从池子(Pool)中直接获取,不用重新新建一个对象。通俗的讲就是:共享元数据。 比如Java中的String就是使…

Python圣诞主题绘图:用turtle库打造冬日奇妙画面【第31篇—python:圣诞节】

文章目录 Python圣诞主题绘图导言代码结构概览详细解析drawlight函数tree函数xzs函数drawsnow函数五角星的绘制 完整代码代码解析总结 Python圣诞主题绘图 导言 圣诞季节是个充满欢乐和创意的时刻。在这个技术博客中,我们将深入探讨如何使用Python的turtle库创建一…

【华为 ICT HCIA eNSP 习题汇总】——题目集4

1、(多选)网络中出现故障后,管理员通过排查发现某台路由器的配置被修改了,那么管理员应该采取哪些措施来避免这种状况再次发生? A、管理员应该通过配置 ACL 来扩展只有管理员能够登录设备 B、管理员应该在路由的管理端…

Redis原理篇(QuickList)

一.前言:ZipList出现的问题 QuickList的出现是为了解决ZipList所存在的一些问题 1.寻找大内存块,申请内存效率低 ZipList所申请的是连续的内存空间,如果ZipList里面存放的数据过多,就需要一块很大的连续内存,系统需…

【c++笔记】用c++解决一系列质数问题!

质数是c语言和c中比较常见的数学问题,本篇文章将带你走进有关质数的一系列基础问题,其中包含常见的思路总结,本篇文章过后,将会持续更新c算法系列,感兴趣的话麻烦点个关注吧! 希望能给您带来帮助&#xff…

新能源智慧充电桩方案:AI视频分析技术如何助力充电桩智能监管?

随着AI人工智能、大数据、云计算等技术快速发展与落地,视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理,提高运营效率,保障充电桩设备的安全和稳定运行。 通过TSINGSEE青犀&触角…

实验五 PLSQL编程

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Arduino开发实例-MTH02温湿度传感器驱动

MTH02温湿度传感器驱动 文章目录 MTH02温湿度传感器驱动1、MTH02温湿度传感器介绍2、硬件准备及接线3、代码实现1、MTH02温湿度传感器介绍 市场上的温湿度传感器在价格、精度和测量范围等方面种类繁多。 MTH02O 是这些传感器中最小的一种。 该传感器使用数字引脚传输温度和湿度…

领略指针之妙

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

mac-hadoop3.3.6 源码构建以及踩坑记录

1. 为什么需要构建源码 因为hadoop的可执行文件 是在专门的机器上编译的 其中native库 不一定能适用于每个机器 导致在启动hadoop过程中 出现烦人的警告 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes w…

探索图像检索:从理论到实战的应用

目录 一、引言二、图像检索技术概述图像检索的基本概念图像检索与文本检索的区别特征提取技术相似度计算索引技术 三、图像检索技术代码示例图像特征提取示例相似度计算索引技术 四、图像搜索流程架构数据采集与预处理特征提取相似度计算与排名结果呈现与优化 五、实际应用图像…

探索世界,从一款好用的浏览器开始!

好用的浏览器分享 在这个数字化的时代,浏览器已经成为了我们生活中不可或缺的工具。从浏览新闻、社交媒体到工作学习,我们几乎无时无刻不在与浏览器打交道。那么,如何选择一款好用的浏览器呢?今天,我就来为大家分享几…

git中合并分支时出现了代码冲突怎么办

目录 第一章、Git代码冲突介绍1.1)什么是Git代码冲突①git merge命令介绍②代码冲突原因 1.2)提示代码冲突的两种情况①本地不同分支的文件有差异时:②本地仓库和git远程仓库的文件有差异时: 1.3)解决合并时的代码冲突…

linux sudo指令提权

sudo指令 sudo 是在linux中用于以超级用户(root)权限执行命令的命令。它允许普通用户在执行特定命令时提升其权限,以完成需要超级用户权限的任务。sudo 的名称是 "superuser do" 的缩写。 格式 接受权限的用户登陆的主机 &#xff…

【LLM问答】两阶段的对话式问答模型ChatQA思路和兼看两阶段的RAG知识问答引擎QAnything

一、ChatQA 1.1 微调 如下图,ChatQA微调包含两个阶段,Supervised Fine-tuning和Context-Enhanced Instruction Tuning 1.1.1 阶段一:SFT(Supervised Fine-tuning) 这个阶段的目标是基于LLM,通过SFT&…

虚拟歌姬学习:DiffSinger,让GitHub下载快的方法!

《三分钟上手DiffSinger》系列 ——基础篇https://www.bilibili.com/video/BV1ug4y1S7Dk/?spm_id_from333.337.search-card.all.click&vd_source124076d7d88eee393a1d8bf6fc787efa 下载DiffSinger 建议用edge浏览器还有steam,有时只是慢,但是还是…

Harmony Ble蓝牙App(四)描述符

Harmony Ble蓝牙App(四)描述符 前言正文一、优化二、描述① 概念② 描述提供者③ 显示描述符 三、源码 前言 上一篇中了解了特性和属性,同时显示设备蓝牙服务下的特性和属性,本文中就需要来使用这些特性和属性来完成一些功能。 正…

VS+QT编译环境中字符乱码问题详解

字符乱码问题详解 1 编码字符集与字符编码方式2 字符乱码原因3 字符乱码解决方案 在解释字符乱码问题之前,我们需要先理清一些基本概念 1 编码字符集与字符编码方式 编码字符集 编码字符集是所有字符以及对应代码值的集合。编码字符集中的每个字符都对应一个唯一的…

一步一步写线程之五线程池的模型之一领导者追随者模型

一、线程池的模型 在学习过相关的多线程知识后,从更抽象的角度来看待多线程解决问题的方向,其实仍然是典型的生产和消费者的模型。无论是数据计算、存储、分发和任务处理等都是通过多线程这种手段来解决生产者和消费者不匹配的情况。所以,得…