ldconfig 和 LD_LIBRARY_PATH 区别

1. ldconfig

  • 作用ldconfig 是一个系统工具,用于配置动态链接器的运行时绑定,主要用于更新 共享库的缓存创建符号链接 。它让系统知道哪里可以找到已安装的共享库,并将这些信息存储在 /etc/ld.so.cache 中,以供后续使用。

  • 操作流程

    1. 更新缓存ldconfig 扫描系统指定的目录(通常是 /lib/usr/lib 等),并更新动态链接器的缓存,记录所有共享库的位置。
    2. 创建符号链接 :它为库文件创建符号链接,以确保能够找到库的不同版本。例如,libexample.so.1 可能有一个符号链接 libexample.so,让程序可以找到最新版本的库。
    3. 维护系统级的共享库查找机制ldconfig 的配置通常是系统范围的,影响整个操作系统中程序的动态链接。
  • 常见用法

    • 更新库缓存:sudo ldconfig
    • 查看已缓存的库:ldconfig -p
    • 添加自定义库目录(临时更新):sudo ldconfig /path/to/my/libs
  • 作用范围ldconfig 作用于 系统级别,它影响所有程序,确保系统上的所有程序都能找到并加载共享库。

2. export LD_LIBRARY_PATH

  • 作用LD_LIBRARY_PATH 是一个环境变量,用于指定动态链接器在运行程序时查找共享库的额外路径。它告诉程序在默认库路径之外的其他位置查找共享库。

  • 操作流程

    1. 指定额外库路径 :通过设置 LD_LIBRARY_PATH,你可以告诉程序在启动时查找特定的共享库位置,而不依赖默认的库目录。
    2. 临时生效LD_LIBRARY_PATH 环境变量的设置通常是临时的,意味着它只在当前会话或程序运行期间有效。如果你关闭终端或重启系统,设置的 LD_LIBRARY_PATH 会丢失。
  • 常见用法

    • 临时设置环境变量并运行程序:

      bash 复制代码
      export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH
      ./myprogram
    • 只在当前会话中生效,如果希望长期生效,可以将它添加到 ~/.bashrc~/.bash_profile 中。

  • 作用范围LD_LIBRARY_PATH 只对 当前用户当前进程 (及其子进程)有效,它 不会 全局修改库的查找路径。

主要区别总结:

功能 ldconfig export LD_LIBRARY_PATH
目的 更新共享库缓存并创建符号链接,配置动态链接器 设置库的查找路径,告知程序在哪里查找库
作用范围 系统级别,影响整个系统的共享库查找 仅对当前会话或进程有效
永久性 是永久性的,一旦执行更新,影响系统的所有程序 临时性,需要在每次会话中重新设置,除非添加到配置文件中
操作对象 更新系统的动态链接器缓存 /etc/ld.so.cache 改变程序运行时查找共享库的路径
使用场景 安装新库后,更新系统库缓存和符号链接 需要临时或手动指定额外的库目录

什么时候使用 ldconfigLD_LIBRARY_PATH

  • 使用 ldconfig

    • 当你安装新的共享库并希望系统能够找到这些库时,或者在系统级别修改了库路径(例如添加自定义库路径)时,你需要使用 ldconfig 来更新缓存。
    • 它适用于 系统级的库管理,如安装新的库包、配置新的库目录等。
  • 使用 LD_LIBRARY_PATH

    • 当你只需要为单个程序或当前会话临时指定共享库路径时,使用 LD_LIBRARY_PATH。这通常用于:
      • 在特定路径下查找库(例如,开发过程中)。
      • 临时使用某个版本的库,而不修改系统配置。

结论

  • ldconfig 主要用于 系统级管理永久性的库路径配置,它更新缓存并确保系统上的所有程序能够找到共享库。
  • LD_LIBRARY_PATH 是一种 临时的 方法,用来为 特定进程 指定额外的库查找路径。
相关推荐
IC 见路不走1 小时前
LeetCode 第91题:解码方法
linux·运维·服务器
翻滚吧键盘1 小时前
查看linux中steam游戏的兼容性
linux·运维·游戏
小能喵1 小时前
Kali Linux Wifi 伪造热点
linux·安全·kali·kali linux
汀沿河2 小时前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
zly35002 小时前
centos7 ping127.0.0.1不通
linux·运维·服务器
小哥山水之间3 小时前
基于dropbear实现嵌入式系统ssh服务端与客户端完整交互
linux
ldj20203 小时前
2025 Centos 安装PostgreSQL
linux·postgresql·centos
翻滚吧键盘3 小时前
opensuse tumbleweed上安装显卡驱动
linux
liulilittle4 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
cui_win4 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip