1. 程式人生 > >Linux下常見的~/.bashrc、/etc/profile、/etc/ld.so.config小科普以及caffe編譯遇到的相關問題解決

Linux下常見的~/.bashrc、/etc/profile、/etc/ld.so.config小科普以及caffe編譯遇到的相關問題解決

~/.bashrc
用於非互動式模式,即nonlogin shell,在這種模式下,shell不與你進行互動,而是讀取存放在檔案中的命令,並且執行它們。當它讀到檔案的結尾,shell也就終止了。/etc/bashrc:為每一個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取。
source ~/.bashrc

/etc/profile
用於互動模式,即login shell,這個檔案是每個使用者登入時都會執行的環境變數設定,並從/etc/profile.d目錄的配置檔案中搜集shell的設定。
如安裝CUDA時:

sudo gedit /etc/profile, add the following path:
>>export PATH=/usr/local/cuda/bin:$PATH >>export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

caffe編譯時如果有這樣的錯誤:’libprotobuf.so.10 is not found’
則需要在profile下新增路徑

>>sudo gedit /etc/profile
  export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
>>source /etc/profile
>>cd
/usr/local/lib >>sudo ln -sf ~/anaconda2/lib/libprotobuf.so.10 libprotobuf.so.10

兩者關係:/etc/profile中設定的變數(全域性)的可以作用於任何使用者,而~/.bashrc等中設定的變數(區域性)只能繼承/etc/profile中的變數,他們是”父子”關係。

ld.so.conf
動態程式ln相比於靜態程式sln小很多,但是如果動態可執行程式不包含執行所需的所有函式,Linux 的動態載入器負責將這些程式和所有必需的共享庫一起裝入。
動態裝入器找到共享庫要依靠兩個檔案:/etc/ld.so.conf 和 /etc/ld.so.cache。我們可以通過cat檢視ld.so.config
當 ldconfig 操作結束時,您會有一個最新的 /etc/ld.so.cache 檔案,它反映您對 /etc/ld.so.conf 所做的更改。從這一刻起,動態裝入器在尋找共享庫時會檢視您在 /etc/ld.so.conf 中指定的所有新目錄。
LD_LIBRARY_PATH

  要指示動態裝入器首先檢查某個目錄,請將 LD_LIBRARY_PATH 變數設定成您希望搜尋的目錄。多個路徑之間用冒號分隔;例如:
  # export LD_LIBRARY_PATH=”/usr/lib/old:/opt/lib”
caffe編譯時,error while loading shared libraries: XXX.so: cannot open shared object file: No such file or directory。則需要將路徑加入共享檔案庫:

sudo su
cat /etc/ld.so.conf
echo "XXX.soPATH" >> /etc/ld.so.conf
ldconfig