深入了解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/zh-hant/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
  • 深入剖析MapStruct未生成實現類問題

    一、MapStruct簡介 MapStruct是一個Java bean映射器,它通過註解和代碼生成來在Java bean之間轉換成本類代碼,實現類型安全,簡單而不失靈活。 作為一個…

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

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r為前綴的字符串。r字符串中的反斜杠(\)不會被轉義,而是被當作普通字符處理,這使得r字符串可以非常方便…

    編程 2025-04-25

發表回復

登錄後才能評論