深入了解ld.so.conf

一、什么是ld.so.conf?

1、ld.so.conf是一个系统配置文件,用于指定系统在运行程序时要搜索的共享库路径。默认值包括/lib、/usr/lib以及/usr/local/lib。在这个文件中,每行都有一个路径被定义,被搜索的顺序是从上到下。

2、/etc/ld.so.conf是系统级别的配置文件,而/etc/ld.so.conf.d/目录是专门为一些软件或程序库设置的配置文件:

/etc/ld.so.conf.d/
├── libc.conf
├── usr.conf
├── x86_64-linux-gnu.conf
└── i386-linux-gnu.conf

可以看到在这个目录下多了一些文件,每个文件内仅包含一行或多行路径定义,而不是像/etc/ld.so.conf那样,一行一个路径。

二、如何修改ld.so.conf文件?

第一种方式是简单的修改文件本身。这个文件一般在/etc/ld.so.conf。如果要添加一个文件夹,简单地在文件的末尾添加新的路径即可。

第二种是创建一个新的文件名为yourname.conf或者其他定义,在/etc/ld.so.conf.d/ 目录下,只有文件扩展名为.conf才会被系统搜索。 每个*.conf文件之间不会影响,因为这些文件内的行是整体添加到搜索路径中。

假设我们将/usr/local/lib加入系统共享库路径:

[root@localhost ~]# vi /etc/ld.so.conf
    /lib  
    /usr/lib  
    #add the following line to /etc/ld.so.conf file  
    /usr/local/lib  
[root@localhost ~]# ldconfig 

修改内容后,我们需要运行“ldconfig”来刷新动态链接库缓存。当运行程序时需要动态链接库时,系统会先查找缓存,如果没有找到,就会按照/etc/ld.so.conf文件搜索路径顺序查找,再找不到的话就会在按照预定的环境变量中进行搜索。如下所示:

ldconfig -f conf_file

三、常用选项

在ld.so.conf文件中可以使用的选项有以下几种:

1、include 目录 ,表示添加一个新的搜索目录到/etc/ld.so.conf中。这条命令从追加的目录中查找.conf文件并自动包含它们的内容:

include /usr/local/etc/ld.so.conf.d/*.conf

2、machine machine-type ,表示添加一个指定类型的搜索路径:

/usr/local/lib/i686/nosegneg

3、hwcap HWCAP列表,要求指定硬件能力。指定了硬件能力之后,在该硬件平台下,只有满足能力列表的程序才会使用该文件夹下的共享库。

4、audit path ,启用动态链接器调试:

audit /usr/local/lib/libstdc++.so.6.0.13

四、总结

ld.so.conf是一种动态连接库配置方法,它可以向操作系统指定搜索路径,以用来建立库之间的链接。通过修改/etc/ld.so.conf文件或将相关文件存放在/etc/ld.so.conf.d/目录中的.conf文件中,可以添加和删除动态链接库搜索路径。正确配置ld.so.conf文件会提高程序运行效率以及解决库文件过多出现的各种问题。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/207239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-08 14:21
下一篇 2024-12-08 14:21

相关推荐

  • CentOS 6如何删除resolv.conf的DNS

    本文将介绍在CentOS 6操作系统下如何删除resolv.conf文件中的DNS配置信息。 一、备份resolv.conf文件 在修改resolv.conf文件之前,建议首先备份…

    编程 2025-04-29
  • 深入解析Vue3 defineExpose

    Vue 3在开发过程中引入了新的API `defineExpose`。在以前的版本中,我们经常使用 `$attrs` 和` $listeners` 实现父组件与子组件之间的通信,但…

    编程 2025-04-25
  • 深入理解byte转int

    一、字节与比特 在讨论byte转int之前,我们需要了解字节和比特的概念。字节是计算机存储单位的一种,通常表示8个比特(bit),即1字节=8比特。比特是计算机中最小的数据单位,是…

    编程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什么是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一个内置小部件,它可以监测数据流(Stream)中数据的变…

    编程 2025-04-25
  • 深入探讨OpenCV版本

    OpenCV是一个用于计算机视觉应用程序的开源库。它是由英特尔公司创建的,现已由Willow Garage管理。OpenCV旨在提供一个易于使用的计算机视觉和机器学习基础架构,以实…

    编程 2025-04-25
  • 深入了解scala-maven-plugin

    一、简介 Scala-maven-plugin 是一个创造和管理 Scala 项目的maven插件,它可以自动生成基本项目结构、依赖配置、Scala文件等。使用它可以使我们专注于代…

    编程 2025-04-25
  • 深入了解LaTeX的脚注(latexfootnote)

    一、基本介绍 LaTeX作为一种排版软件,具有各种各样的功能,其中脚注(footnote)是一个十分重要的功能之一。在LaTeX中,脚注是用命令latexfootnote来实现的。…

    编程 2025-04-25
  • 深入了解Python包

    一、包的概念 Python中一个程序就是一个模块,而一个模块可以引入另一个模块,这样就形成了包。包就是有多个模块组成的一个大模块,也可以看做是一个文件夹。包可以有效地组织代码和数据…

    编程 2025-04-25
  • 深入理解Python字符串r

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r为前缀的字符串。r字符串中的反斜杠(\)不会被转义,而是被当作普通字符处理,这使得r字符串可以非常方便…

    编程 2025-04-25
  • 深入探讨冯诺依曼原理

    一、原理概述 冯诺依曼原理,又称“存储程序控制原理”,是指计算机的程序和数据都存储在同一个存储器中,并且通过一个统一的总线来传输数据。这个原理的提出,是计算机科学发展中的重大进展,…

    编程 2025-04-25

发表回复

登录后才能评论