ldconfig
參考:http://man.linuxde.net/ldconfig
https://blog.csdn.net/chenzixun0/article/details/56278632
主要是在默認搜尋目錄/lib和/usr/lib以及動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態鏈接庫(格式如lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件,緩存文件默認為/etc/ld.so.cache,此文件保存已排好序的動態鏈接庫名字列表。linux下的共享庫機制采用了類似高速緩存機制,將庫信息保存在/etc/ld.so.cache,程序連接的時候首先從這個文件里查找,然后再到ld.so.conf的路徑中查找。為了讓動態鏈接庫為系統所共享,需運行動態鏈接庫的管理命令ldconfig,此執行程序存放在/sbin目錄下。
ldconfig命令參數:
-v或–verbose:ldconfig將顯示正在掃描的目錄及搜索到的動態鏈接庫,還有它所創建的連接的名字
-f CONF:此選項指定動態鏈接庫的配置文件為CONF,系統默認為/etc/ld.so.conf
-p或–print-cache:此選項指示ldconfig打印出當前緩存文件所保存的所有共享庫的名字。
-V:此選項打印出ldconfig的版本信息,而后退出。
從以上可知:
在/lib和/usr/lib里面添加庫文件,是無需將路徑添加到/etc/ld.so.conf中去的,但是需要使用命令sudo ldconfig,否則無法找到庫文件。在上述兩個目錄之外的路徑添加庫文件,需要先將將庫文件的路徑追加入/etc/ld.so.conf,假設庫文件在/usr/local/mysql/lib中,可以使用命令:
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
sudo ldconfig -v | grep mysql # 查看mysql庫文件是否被找到。
1
2
若在/lib和/usr/lib之外的目錄中添加庫文件,而又不在/etc/ld.so.conf中寫入路徑,此時可以用添加環境變量LD_LIBRARY_PATH的做法讓系統識別到庫文件。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib
1
可以在/etc/ld.so.conf.d/目錄下創建.conf文件來添加庫路徑。在默認的/etc/ld.so.conf文件中,可以看到有如下內容:
include /etc/ld.so.conf.d/*.conf
1
說明/etc/ld.so.conf.d/目錄下所有的.conf文件都被包含,文件中所有的路徑都會被搜索到。
例如:
touch opencv.conf
echo "/user/local/lib" > opencv.conf
sudo ldconfig
1
2
3
環境變量配置文件(Ubuntu16.04)
/etc/profile
用於設置系統級的環境變量和啟動程序,在這個文件下配置會對所有用戶生效。當用戶登錄(login)時,文件會被執行,並從/etc/profile.d目錄的配置文件中查找shell設置。如果對/etc/profile修改的話必須重啟才會生效
/etc/bash.bashrc
每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取。如果想對所有使用bash的用戶修改某個配置並在以后打開的bash都生效的話可以修改這個文件,修改之后不用重啟,重新打開一個bash即可生效。
~/.profile
每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件.
~/.bashrc
該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取.
~/.bash_logout
當每次退出系統(退出bash shell)時,執行該文件,通常存放清理工作的命令。
執行順序
登陸shell
登陸shell時,首先執行/etc/profile,之后執行用戶目錄下的~/.profile,~/.profile中會執行~/.bashrc。
交互式非登陸shell
首先執行/etc/bash.bashrc,之后執行~/.bashrc