当前位置: 首页 > article >正文

Linux 库文件的查看和管理

    • Linux 库文件说明
      • 1、库文件的类型
      • 2、库文件存储路径
      • 3、库文件查找顺序
    • Linux 库文件管理
      • 1、查看动态库相关信息
      • 2、添加动态库查找路径

Linux 库文件说明

1、库文件的类型

Linux 中的库文件本质上就是封装好的功能模块,某个应用程序如果要实现某个功能,只需要调用现有库文件就可以直接使用,这样就避免了重复开发。Linux 中的库文件分为两种类型:

  • 静态库:以 .a 结尾。程序编译时,编译器会把需要的函数代码直接复制进可执行文件。所以程序编译完成后,静态库不存在不影响程序运行。
  • 动态库:以 .so 结尾。程序编译时,编译器只记录一个引用,程序运行时才通过动态链接器加载对应的 .so 文件,后续程序运行时需要保证动态库能被找到。

2、库文件存储路径

路径用途说明
/lib 、/lib64存放操作系统引导和基本运行时所需的共享库
/usr/lib、/usr/lib64存放通过包管理器(如 apt、yum)安装的软件的库文件
/usr/local/lib存放用户通过源码编译安装的软件所使用的库
自定义路径存放特定工程项目的私有库文件。

3、库文件查找顺序

Linux 中某个应用进程运行时加载动态库时,实际是通过 动态链接器 来实现库的查找和加载,动态链接器 会按照一下的顺序来查找库文件。

查找顺序查找方式说明
编译时 指定的路径如果编译时制定了查找库文件的路径,会从指定的路径下查找
环境变量 LD_LIBRARY_PATH用于临时指定优先搜索的库路径,开发和调试常用,一般为空。
系统库缓存 /etc/ld.so.cacheldconfig 命令生成,记录常用库路径,会从这里面指定的路径查找库文件
默认路径/lib, /lib64, /usr/lib由动态链接器写死(内置)的默认库查找路径

Linux 库文件管理

1、查看动态库相关信息

查看 动态链接器写死(内置)的默认库查找路径

ld --verbose | grep SEARCH_DIR

查看硬盘上是否存在对应的库文件

# ldconfig -v 是显示所有已经存在在硬盘上的库文件,不管是否被加载
sudo ldconfig -v | grep name

查看某个库文件是否已经被系统加载

# ldconfig -p 显示的是所有已被系统动态链接器“识别并缓存”的动态库文件
sudo ldconfig -p | grep name

查看一个可执行程序运行时会使用哪些 动态链接库(.so),以及是否正常加载

ldd /path
  • 有 => 指向路径:表示动态链接器在磁盘上找到了对应的库文件
  • 无 => 指向路径:是虚拟动态共享对象,内核提供,不是实际的磁盘文件
  • 输出中包含=> not found:表示找不到该动态库,程序运行时会报错

例如:查看 ls 会使用哪些动态库文件:

root@ubuntu:~# ldd /usr/bin/lslinux-vdso.so.1 (0x00007ffee1127000)libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fe20f017000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe20ee25000)libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fe20ed94000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe20ed8e000)/lib64/ld-linux-x86-64.so.2 (0x00007fe20f07e000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe20ed6b000)

2、添加动态库查找路径

除了 由动态链接器写死(内置)的默认库查找路径外,还可以通过 ldconfig 来指定应用程序查找共享库的路径:

(1)将库路径写入配置文件 /etc/ld.so.conf/etc/ld.so.conf.d/*.conf
例如:

/usr/local/python3/lib
/usr/local/ffmpeg/lib

(2)执行 ldconfig 命令,生成或更新 /etc/ld.so.cache,这样系统就能通过缓存文件 /etc/ld.so.cache 快速查找到动态库。

sudo ldconfig

相关文章:

Linux 库文件的查看和管理

Linux 库文件说明1、库文件的类型2、库文件存储路径3、库文件查找顺序 Linux 库文件管理1、查看动态库相关信息2、添加动态库查找路径 Linux 库文件说明 1、库文件的类型 Linux 中的库文件本质上就是封装好的功能模块,某个应用程序如果要实现某个功能,…...

Java设计模式深度解析:策略模式的核心原理与实战应用

目录 策略模式基础解析策略模式实现指南策略模式典型应用场景Java生态中的策略模式实践策略模式进阶技巧策略模式最佳实践总结与展望1. 策略模式基础解析 1.1 核心概念与定义 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法族,将每个算法封装成独立…...

【计算机网络】第3章:传输层—概述、多路复用与解复用、UDP

目录 一、概述和传输层服务 二、多路复用与解复用 三、无连接传输:UDP 四、总结 (一)多路复用与解复用 (二)UDP 一、概述和传输层服务 二、多路复用与解复用 三、无连接传输:UDP 四、总结 &#xff08…...

6、在树莓派上安装 NTP(Network Time Protocol )服务的步骤

在树莓派上安装 NTP(Network Time Protocol )服务的步骤: 1. 安装 NTP 服务 打开树莓派终端,输入以下命令更新软件包列表: sudo apt-get update然后安装 NTP 服务: sudo apt-get install ntp2. 配置 NT…...

神经符号AI的企业应用:结合符号推理与深度学习的混合智能

💡 技术前沿: 神经符号AI代表了人工智能发展的新阶段,它将深度学习的模式识别能力与符号推理的逻辑分析能力有机结合,创造出更加智能、可解释且可靠的AI系统。这种混合智能技术正在重塑企业的智能化应用,从自动化决策到…...

VSCode 中 C/C++ 安装、配置、使用全攻略:小白入门指南

引言 本文为Windows系统下安装配置与使用VSCode编写C/C代码的完整攻略,示例机器为Windows11。 通过本文的指导,你可以成功在Windows 机器上上使用VSCode进行C/C开发。 在文章开始之前,你可以先阅读下面这段话,以便于对步骤有个大…...

重温经典算法——希尔排序

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 基本原理 希尔排序是插入排序的改进版,通过按增量分组并逐步缩小增量实现排序。时间复杂度取决于增量序列,平均约为 O(n log n) 到 O(n^(3/2))&…...

CortexON:开源的多代理AI系统无缝自动化和简化日常任务

简介 CortexON是一个开源的多代理AI系统,灵感来自Manus和OpenAI DeepResearch等高级代理平台。CortexON旨在无缝自动化和简化日常任务,擅长执行复杂的工作流程,包括全面的研究任务、技术操作和复杂的业务流程自动化。 技术架构 CortexON的技…...

海信IP810N-海思MV320芯片-安卓9-2+16G-免拆优盘卡刷固件包

海信IP810N-海思MV320芯片-安卓9-216G-免拆优盘卡刷固件包 线刷方法:(新手参考借鉴一下) 1.准备一个优盘,最佳是4G,卡刷强刷刷机,用一个usb2.0的8G以下U盘,fat32,2048块单分区格式化…...

【Golang】使用gin框架导出excel和csv文件

目录 1、背景2、go库【1】excel库下载【2】csv标准库 3、代码示例4、使用方法 1、背景 项目中可能会遇到导入导出一批数据的功能,对于批量大数据可能用表格的方式直观性更好,所以本篇文件来讲一下go中导出excel和csv文件的方式。 2、go库 【1】excel库…...

【unity游戏开发入门到精通——通用篇】AssetBundle(AB包)和AssetBundleBrowser的使用介绍

文章目录 前言1、什么是AssetBundle?2、AB包与Resources系统对比3、AB包核心价值一、AB包打包工具Asset Bundle Browser1、下载安装AssetBundles-Browser2、打开Asset Bundle Browser窗口3、如何让资源关联AB包二、AssetBundleBrowser参数相关1、Configure 配置页签2、Build 构…...

2025年6月4日收获

Authorization Authorization是一种通用的、标准化的权限控制和认证的通用框架,它能够使跨系统和跨域的身份验证和授权管理更容易,使不同应用程序之间能够更轻松地实现单点登录(SSO)、用户身份验证和授权控制等。 在前端使用 axi…...

leetcode hot100 链表(二)

书接上回: leetcode hot100 链表(一)-CSDN博客 8.删除链表的倒数第N个结点 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* currhead;int len0;while(curr){currcurr->next;len;}int poslen-n…...

6. MySQL基本查询

1. 表的增删改查 Create(创建), Retrieve(读取), Update(更新), Delete(删除) 2. Create & Insert 语法: insert [info] table_name () values () 2.1. 案例: 创建一个学生表 指定列单行插入, 如果values前省略, 则默认是全属性插入多行指定列插入, 中间分隔符为, 3. 插入替…...

JavaWeb简介

目录 1.1 JavaWeb 简介​​ ​​1.2 JavaWeb 技术栈​​ ​​1.3 JavaWeb 交互模式​​ ​​1.4 JavaWeb 的 C/S 和 B/S 模式​​ ​​C/S 模式 (Client-Server / 客户端-服务器模式)​​ ​​B/S 模式 (Browser-Server / 浏览器-服务器模式)​​ ​​1.5 JavaWeb 实现前…...

CMS32M65xx/67xx系列CoreMark跑分测试

CMS32M65xx/67xx系列CoreMark跑分测试 1、参考资料准备 1.1、STM32官方跑分链接 1.2、官网链接 官方移植文档,如下所示,点击红框处-移植文档: A new whitepaper and video explain how to port CoreMark-Pro to bare-metal 1.3、测试软件git下载链接 …...

中国区域30m/15天植被覆盖度数据集(2010-2022)

时间分辨率:日空间分辨率;:10m - 100m共享方:式开放获取数据大小:2.98 TB数据时间范围:2010-01-01 — 2022-12-31元数据更新时间:2024-12-23 数据集摘要 高时空分辨率的植被覆盖度产品存在着广…...

LabVIEW准分子激光器智能控制系统

LabVIEW 开发准分子激光器智能控制系统,针对放电激励型准分子激光器强电磁干扰环境下的控制难题,采用 “PC 端 LabVIEW 人机交互 MCU 端实时控制 光纤隔离通信” 架构,实现激光能量闭环控制、腔体环境监测、气路自动管理等功能。硬件选用 N…...

微服务面试资料1

在当今快速发展的技术领域,微服务架构已经成为构建复杂系统的重要方式之一。本文将围绕微服务的核心概念、技术栈、分布式事务处理、微服务拆分与设计,以及敏捷开发实践等关键问题展开深入探讨,旨在为准备面试的 Java 开发者提供一份全面的复…...

Pytest Fixture 详解

Pytest Fixture 详解 Fixture 是 pytest 最强大的功能之一,用于提供测试所需的依赖资源(如数据库连接、临时文件、模拟对象等),并支持复用、作用域控制和自动清理。以下是全面详解: 1. 基本用法 定义 Fixture 使用 …...

力扣HOT100之二分查找:74. 搜索二维矩阵

这道题直接a了,我们可以参考上一道题:35.搜索插入位置的思路,详情见我的上一篇博客。将每一行的第一个元素当作一个数组中的元素,然后对这个数组进行二分查找,如果直接找到了target,则直接返回true&#xf…...

【前端】前后端通信

前端开发主要完成的两件事: 1)界面搭建 2)数据交互 本知识页参考: https://juejin.cn/post/6925296067378429960 0. XMLHttpRequest 客户端的一个API,为浏览器和服务器通信提供了一个便携通道。现代浏览器支持XMLHttp…...

编程技能:格式化打印04,sprintf

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:编程技能:格式化打印03,printf 回到目录…...

C语言基础(11)【函数1】

内容提要 函数 文章目录 内容提要函数函数的描述函数的分类相关概念函数的定义:定义:案例: 形参和实参形参(形式参数)实参(实际参数)案例: 函数的返回值案例: 函数 函数…...

R语言基础| 下载、安装

在此前的单细胞教程中,许多小伙伴都曾因为R语言基础不足而十分苦恼。R语言是一种开源的编程语言和软件环境,专门用于统计分析、图形表示和数据挖掘。它最初由Ross Ihaka和Robert Gentleman在1993年创建,旨在为统计学家和数据分析师提供一个广…...

【hive sql】窗口函数

参考 包括窗口函数在内的执行顺序 from & join --确定数据源 where --行级过滤 group by --分组 having --组级过滤 窗口函数 --计算窗口函数结果 select --选择列 distinct --去重 order by --最终排序(可对窗口函数结果进行排序) limit/offset -…...

Ubuntu24.04 交叉编译 aarch64 ffmpeg

ffmpeg 官网: https://ffmpeg.org文档: https://ffmpeg.org/documentation.html 编译参数说明: https://trac.ffmpeg.org/wiki/CompilationGuide/Generic在Linux下编译: https://trac.ffmpeg.org/wiki/CompilationGuide 下载页: https://ffmpeg.org/download.html 安装依赖 …...

《AI角色扮演反诈技术解析:原理、架构与核心挑战》

AI角色扮演反诈技术解析:原理、架构与核心挑战 研究目标 技术栈梳理: 系统总结AI角色扮演在执法场景中的实现路径,涵盖大型语言模型(LLM)、提示词工程(Prompt Engineering)、多模态交互链路等…...

微软的新系统Windows12未来有哪些新特性

在今年即将到来的重大设计升级中,苹果计划对其全线操作系统统一按年份命名,作为另一巨头微软的win12还远吗?win11和win10是微软现在正在用的主流版本,win11系统发布于2021年6月24日,win10系统发布于2015年7月29日。预计win12尝鲜版可能在2025年下半年或明年。 尽管win12还…...

树莓派超全系列教程文档--(54)如何使用rsync在计算机之间同步文件夹

如何使用rsync在计算机之间同步文件夹 使用 rsync 在计算机之间同步文件夹 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rsync 在计算机之间同步文件夹 您可以使用 rsync 在计算机之间同步文件夹。例如,您可以使用 rsync 将R…...