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

最近需要做套接字通讯的工作,最好是有一个网络调试软件能够接受或者发送套接字,测试代码能够正常通讯。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 ./mNetAssistlinux-vdso.so.1 (0x00007ffecafe9000)libQtGui.so.4 => not foundlibQtNetwork.so.4 => not foundlibQtCore.so.4 => not foundlibstdc++.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 foundlibglib-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 updatesudo 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.hqwc.cn/news/418197.html

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

相关文章

【51单片机Keil+Proteus8.9】控制步进电机+LCD1602显示状态

步进电机控制 设计思路 电路设计: 选用AT89C51单片机作为电路核心部件,外加LM016L液晶显示屏作为显示,显示步进电机的Fast,Slow,Stop的三个状态将AT89C51单片机所选引脚与LM016L控制引脚相连,再将数据通…

ros2 基础学习16 - RQT:模块化可视化工具

RQT:模块化可视化工具 ROS中的Rviz功能已经很强大了,不过有些场景下,我们可能更需要一些简单的模块化的可视化工具,比如只显示一个摄像头的图像,使用Rviz的话,难免会觉得操作有点麻烦。 此时,我…

C++力扣题目435-无重叠区间 763--划分字母区间

435. 无重叠区间 力扣题目链接(opens new window) 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1…

React16源码: React中的renderRoot的源码实现

renderRoot 1 )概述 renderRoot 是一个非常复杂的方法这个方法里处理很多各种各样的逻辑, 它主要的工作内容是什么?A. 它调用 workLoop 进行循环单元更新 遍历整个 Fiber Tree,把每一个组件或者 dom 节点对应的Fiber 节点拿出来单一的进行更…

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

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

实验七 RMAN恢复管理器

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

集合框架(三)

Set集合 特点 Set系列集合特点: 无序:添加数据的顺序和获取出的数据顺序不一致;无重复;无索引; HashSet:无序、不重复、无索引LinkedHashSet:有序、不重复、无索引TreeSet:排序、…

git提交代码到远端仓库的方法详解

一、何为git git就是版本控制器,就比如说你新建了一个git文件夹,里面用于存放你的C语言实习报告,现在要用git对该文件夹进行接管。当你修改了你的C语言实习报告点击保存之后,就用git的相关命令,提交给git,让…

第二百七十八回

文章目录 1. 概念介绍2. 使用方法2.1 DropdownMenu2.1 DropdownMenuEntry 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何禁止页面跟随手机自动旋转"相关的内容,本章回中将介绍DropdownMenu组件.闲话休提,让我们一起Talk Flutter吧。 1.…

NAT实验

一:实验要求 二:实验分析 拓扑图 三:实验配置 1:路由器配置 R1配置IP R2配置IP 2:缺省路由 查看路由表 3:端口映射 4:pc、HTTP配置 5:DNS、client配置 四:实验结果 pc可以ping…

AUTOSAR实战篇:基于ETAS工具链集成Infineon FEE模块

AUTOSAR实战篇:基于ETAS工具链集成Infineon FEE模块 前言 小T出品,必是精品! 手把手带你集成Infineon FEE模块,你值得拥有! 正文 FEE全称为“Flash EEPROM Emulation ” , 即通过Flash来模拟EEPROM操作,相比Flash&…

Vue + JS + tauri 开发一个简单的PC端桌面应用程序

Vue JS tauri 开发一个简单的PC端桌面应用程序 文章目录 Vue JS tauri 开发一个简单的PC端桌面应用程序1. 环境准备1.1 安装 Microsoft Visual Studio C 生成工具[^2]1.2 安装 Rust[^3] 2. 使用 vite 打包工具创建一个 vue 应用2.1 使用Vite创建前端Vue项目2.2 更改Vite打包…