Ubuntu系统下库的相关问题解析

news2024/11/17 22:43:23

本文通过以下几个问题对Ubuntu系统下库的相关问题进行解析。

1.库是什么?

库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。

本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。

所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤:

1

2.库的种类有哪些?

linux下的库有两种:静态库和共享库(动态库)。

静态库:lib库名.a
动态库:lib库名.so

区分一个概念:库是包含前缀lib以及后缀.a或者.so的一个整体

3.动态库和静态库的特点是什么?

(1)静态库的特点:

  • 静态库对函数库的链接是放在编译时期完成的。
  • 程序在运行时与函数库再无瓜葛,移植方便。
  • 浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件。

(2)动态库的特点:

  • 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。
  • 动态库在程序运行时才被载入,也解决了静态库对程序的更新、部署和发布页会带来麻烦。用户只需要更新动态库即可,增量更新。

4.如何查看一个可执行程序依赖哪些库?

ldd命令可以查看一个可执行程序依赖的共享库

例如# ldd + 路径/可执行程序

5.库的位置和程序引用的位置不同怎么办?

可以通过软连接来解决这个问题,但前提是这个库在电脑里已经安装了。

(1)软链接的用法:

软连接(softlink)也称符号链接。linux里的软连接文件就类似于windows系统中的快捷方式。软连接文件实际上是一个特殊的文件,文件类型是I。软连接文件实际上可以理解为一个文本文件,这个文件中包含有软连接指向另一个源文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软连接所指向的源文件实体。

2
通过下述指令来创建软连接:

ln –s 源文件 软连接文件

通过下述指令来删除软连接

rm -f 软链接文件

(2)链接步骤
首先,找到库的位置,可以通过locate指令,如下图所示:
3
然后,通过ln指令在程序所找的库的路径(比如/usr/local/lib)下生成一个软链接即可。

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

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

相关文章

ad+硬件每日学习十个知识点(27)23.8.7 (DCDC的datasheet)

文章目录 1.DCDC拿到手册需要关注的参数2.MOS选型3.TPS54331的ECO模式(跳跃模式,损耗小、纹波大)4.TPS54331的引脚功能(BOOT这里没太看懂,之后回来再看看)5.TPS54331的额定值6.TPS54331在test条件下的电气特…

多个配置WebMvcConfigurationSupport失效问题

最近在项目中用类继承WebMvcConfigurationSupport实现拦截器 Configuration RequiredArgsConstructor public class SpringWebSupport extends WebMvcConfigurationSupport {private final ProjectInterceptor projectInterceptor;// 拦截器 //设置拦截器对象和拦截请求Ove…

idea模板的使用(配置xml文件模板)

1. 问题的引出 我们在日常项目中可以发现,sql映射文件和mybatis主配置文件,以及application.yml文件中有很多固定不变的内容,为了方面使用,所以可以把这些xml文件设置为模板 2. 创建模板的步骤 按照图片一步一步进行即可 点击…

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解

【JavaEE】Spring MVC 程序开发要点总结 文章目录 【JavaEE】Spring MVC 程序开发要点总结1. 什么是 Spring MVC1.1 MVC的执行流程1.2 为什么要学Spring MVC1.3 Spring MVC 的学习 2. Spring MVC 的创建和连接2.1 创建2.2 连接2.2.1 RestController注解2.2.2 RequestMapping注解…

使用ffmpeg将m4a及wav等文件转换为MP3格式

要使用ffmpeg将m4a及wav等文件转换为MP3格式,您可以按照以下步骤进行操作: 安装 ffmpeg 确保您已经安装了ffmpeg软件。如果没有安装,请访问ffmpeg的官方网站https://ffmpeg.org/ 并按照说明进行安装。 Win10 / Win11 可以通过 winget 命令…

Springboot中创建拦截器

目录 目的 实现过程 1、创建拦截器 2、注册拦截器 完整代码 目的 在Springboot项目中创建拦截器,在进入Controller层之前拦截请求,可对拦截到的请求内容做响应处理,如:校验请求参数、验证证书等操作; 实现过程 1、创…

五金店和MRO工业品超市有什么区别

五金店和MRO工业品超市有一定的相似性,但它们之间还是存在一些区别的。 五金店主要经营各种五金产品,如家具五金、建筑五金、工具、螺丝螺母等,五金店的产品范围相对较窄,通常针对个人消费者和家庭使用,如日常家居维修…

AutoDL服务器的镜像版本太高,配置python3.7 tensorflow1.15版本的框架的步骤

1.选择一个实例,进入后端界面 2. 更新bashrc中的环境变量 conda init bash && source /root/.bashrc查看虚拟环境 conda info --envs可以看到此时有一个base的虚拟环境 但是它的python版本为3.8.10,无法安装tensorflow1.15,所以我们要创建一个…

40% Ubuntu 用户面临着新特权提升漏洞风险

导读Wiz 的研究人员发现,最近被引入 Ubuntu 内核的两个 Linux 漏洞,可能会在大量设备上为非特权本地用户提升权限。这两个漏洞被追踪为 CVE-2023-32629 和 CVE-2023-2640,预计影响了大约 40% 的 Ubuntu 用户。 根据介绍,其中 CVE…

干货分享|Elsevier投稿进度查询功能正式上线,随时获取投稿状态!

想必广大科研学者们都经历过每天登录系统查看投稿进度的煎熬过程,为了方便广大科研人随时获取投稿状态,2023年8月,Elsevier【微信端投稿进度查询功能】正式上线! 无论你是通讯作者还是共同作者,只需一次查询&#xff…

第二篇:导读-组件的实现:直击 Vue 核心的实现

相信作为一个 Vue.js 的开发者,最熟悉的应该就是组件了,我们开发 Vue.js 的项目,大部分时间都是在写组件,组件系统是 Vue.js 的一个重要概念,它是一种对 DOM 结构的抽象,我们可以使用小型、独立和通常可复用…

【QT】 QT开发PDF阅读器

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT开发PDF阅读器技术,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享,一起进步! 你的点…

python流星雨特效代码微信,python流星雨特效代码源

大家好,小编为大家解答python流星雨特效代码需要什么模块的问题。很多人还不知道python流星雨特效代码微信,现在让我们一起来看看吧! # -*- coding:utf-8 -*- # 导入系统文件库 import pygame import random from pygame.locals import * fr…

Python爬虫都喜欢用的防封招式!

你是否在爬取数据的时候被网站的IP封锁问题困扰过?别担心,我来教你如何使用爬虫ip,轻松解决这个问题并提升你的爬虫效率!快来跟我学,让你的Python爬虫变得更牛! 首先,让我来和你解释一下什么是爬…

基于神经网络的心脏病健康系统

基于神经网络的心脏病健康系统 导语 这篇文章旨在记录该系统设计的过程,同时指导从零开始搭建本健康系统的环境,并在自己的电脑上把这个心脏病健康系统run起来。 下面是这个文件夹下各个文件的介绍: .\心脏病预测 ├─build --- 该系…

MYSQL进阶-查询优化- 实战 STATUS

回城传送–》《100天精通MYSQL从入门到就业》 文末有送书活动,可以参加! 文章目录 一、练习题目二、SQL思路SQL进阶-查询优化- SHOW STATUS初始化数据解法SHOW STATUS是什么实战经验:常用的mysql状态查询1、QPS(每秒处理的请求数量)计算思路…

PyTorch 微调终极指南:第 1 部分 — 预训练模型及其配置

一、说明 如今,在训练深度学习模型时,通过在自己的数据上微调预训练模型来迁移学习已成为首选方法。通过微调这些模型,我们可以利用他们的专业知识并使其适应我们的特定任务,从而节省宝贵的时间和计算资源。本文分为四个部分&…

还不知道Java类加载机制,你算白学了

1 前言 在Java的世界里,每一个类或者接口,在经历编译器后,都会生成一个个.class文件。类加载机制指的是将这些.class文件中的二进制数据读入到内存中,并对数据进行校验,解析和初始化。最终,每一个类都会在…

Not All Features Matter:Enhancing Few-shot CLIP with Adaptive Prior Refinement

APE是ICCV2023的一篇文章,也是我在这个领域里接触的第一篇文章,这里主要做一下记录。 论文链接:2304.01195.pdf (arxiv.org) 代码链接:yangyangyang127/APE: [ICCV 2023] Code for "Not All Features Matter: Enhancing Fe…

【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)

SKNet(Selective Kernel Network)是一种用于图像分类和目标检测任务的深度神经网络架构,其核心创新是引入了选择性的多尺度卷积核(Selective Kernel)以及一种新颖的注意力机制,从而在不增加网络复杂性的情况…