一、什麼是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