当前位置: 首页 > 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
http://www.lryc.cn/news/2400690.html

相关文章:

  • Java设计模式深度解析:策略模式的核心原理与实战应用
  • 【计算机网络】第3章:传输层—概述、多路复用与解复用、UDP
  • 6、在树莓派上安装 NTP(Network Time Protocol )服务的步骤
  • 神经符号AI的企业应用:结合符号推理与深度学习的混合智能
  • VSCode 中 C/C++ 安装、配置、使用全攻略:小白入门指南
  • 重温经典算法——希尔排序
  • CortexON:开源的多代理AI系统无缝自动化和简化日常任务
  • 海信IP810N-海思MV320芯片-安卓9-2+16G-免拆优盘卡刷固件包
  • 【Golang】使用gin框架导出excel和csv文件
  • 【unity游戏开发入门到精通——通用篇】AssetBundle(AB包)和AssetBundleBrowser的使用介绍
  • 2025年6月4日收获
  • leetcode hot100 链表(二)
  • 6. MySQL基本查询
  • JavaWeb简介
  • CMS32M65xx/67xx系列CoreMark跑分测试
  • 中国区域30m/15天植被覆盖度数据集(2010-2022)
  • LabVIEW准分子激光器智能控制系统
  • 微服务面试资料1
  • Pytest Fixture 详解
  • 力扣HOT100之二分查找:74. 搜索二维矩阵
  • 【前端】前后端通信
  • 编程技能:格式化打印04,sprintf
  • C语言基础(11)【函数1】
  • R语言基础| 下载、安装
  • 【hive sql】窗口函数
  • Ubuntu24.04 交叉编译 aarch64 ffmpeg
  • 《AI角色扮演反诈技术解析:原理、架构与核心挑战》
  • 微软的新系统Windows12未来有哪些新特性
  • 树莓派超全系列教程文档--(54)如何使用rsync在计算机之间同步文件夹
  • 华为ICT和AI智能应用