ldconfig 和 LD_LIBRARY_PATH 区别

server/2024/11/13 16:16:21/

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 会丢失。
  • 常见用法

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

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

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

主要区别总结:

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

什么时候使用 ldconfigLD_LIBRARY_PATH

  • 使用 ldconfig

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

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

结论

  • ldconfig 主要用于 系统级管理永久性的库路径配置,它更新缓存并确保系统上的所有程序能够找到共享库。
  • LD_LIBRARY_PATH 是一种 临时的 方法,用来为 特定进程 指定额外的库查找路径。

http://www.ppmy.cn/server/141655.html

相关文章

sudo docker ps才能查看,docker ps不能查看问题

出现 permission denied while trying to connect to the Docker daemon socket 的错误,通常是因为当前用户没有权限访问 Docker 的 Unix 套接字 /var/run/docker.sock。在 Linux 系统中,这个套接字默认只能由 root 用户或 docker 组的成员访问。 要解决…

Tofu AI视频处理模块视频输入配置方法

应用Tofu产品对网络视频进行获取做视频处理时,首先需要配置Tofu产品的硬件连接关系与设备IP地址、视频拉流地址。 步骤1 Tofu设备点对点直连或者通过交换机连接到电脑,电脑IP配置到与Tofu默认IP地址同一个网段。 打开软件 点击右上角系统设置 单击左侧…

SQL(2)

一.时间盲注 有回显时用Union带出数据,只显示是否时可用布尔盲注得出数据,那如果没有任何输出时? 比如无论查询什么,都显示success,同一个回应,无法直接从服务器注入出任何数据,但是我们可以利…

Spring Boot编程训练系统:构建与优化

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

更改 Jupyter Notebook 中文件的存放位置

更改 Jupyter Notebook 中文件的存放位置 默认地,Jupyter Notebook 中文件存放位置是"C:\Users\lenovo"下,(lenovo是我自己电脑的用户名),如果我们直接通过 Jupyter Notebook 图标打开,那么面向的就是该目录。 如果需…

算法——长度最小的子数组(leetcode209)

首先题目明确给出一个含有n个正整数的数组和一个目标值我们需要求出数组中下标连续的子数组元素之和大于等于目标值的最小子数组并返回。 明确题目大意后我们最容易想到的还是用两层for循环(外层for循环确定子数组的起始位置,内层for循环来确定终止位置并枚举起始位…

共享汽车管理:SpringBoot框架的高效实现

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足,创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系…

【GIT】一文带你彻底了解 git rebase(图解+案例+实战)

文章目录 一、整合不同分支间的变更1. 功能原理2. 使用方法3. 使用场景:4. rebase VS merge4.1 异同4.2 优缺点4.3 小结 5. 工作流实战 二、重建提交历史1. 使用场景2.使用方法2.1 参数说明 3.工作流实战 三、git pull --rebase四、总结 git rebase,顾名…