1. 解決方法
將管理員user賬戶中的CUDA/ Anaconda安裝環(huán)境添加到新用戶的環(huán)境變量中。
i. vim ~/.bashrc
ii. # 添加user賬戶中的CUDA/ Anaconda的環(huán)境變量path
iii. source ~/.bashrc
去user賬戶下的bashrc文件中神得,找到CUDA和Anaconda的環(huán)境變量path
將這三行命令復制到新用戶的.bashrc文件中
export PATH=$PATH:/usr/local/cuda-10.0/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-10.0/lib64
export PATH=/home/user/anaconda3/bin:$PATH
驗證是否成功沽损?
2. 什么是.bashrc
什么是 .bashrc,為什么要編輯 .bashrc循头? | Linux 中國 - Linux中國的文章 - 知乎
https://zhuanlan.zhihu.com/p/33546077
為了加載個人的配置绵估,bash每次啟動都會加載.bashrc文件的內(nèi)容,每個用戶的home目錄下都有這個shell腳本卡骂。他是用來存儲并加載個人的終端配置和環(huán)境變量国裳。
3. LD_LIBRARY_PATH 用法
LD_LIBRARY_PATH 是 Linux 環(huán)境變量名,該環(huán)境變量主要用于指定查找共享庫(動態(tài)鏈接庫)時除了默認路徑之外的其他路徑全跨。
也就是當執(zhí)行函數(shù)動態(tài)鏈接.so文件時缝左,如果不在默認路徑 'lib' 或者 '/usr/lib',那么就需要指定環(huán)境變量LD_LIBRARY_PATH。
假如現(xiàn)在需要在已有的環(huán)境變量上添加新的路徑名渺杉,則采用如下方式:
LD_LIBRARY_PATH = NewDirs:$LD_LIBRARY_PATH
實例如下:
export LD_LIBRARY_PATH = /export/apps/anaconda2/2.4.1/lib/:$LD_LIBRARY_PATH
為什么修改LD_LIBRARY_PATH呢蛇数?
因為程序運行時,動態(tài)庫的搜索路徑的先后順序為:
① 編譯目標代碼時指定的動態(tài)庫搜索路徑是越;
② 環(huán)境變量LD_LIBRARY_PATH指定的動態(tài)庫搜索路徑耳舅;
③ 配置文件/etc/ld.so.conf中指定的動態(tài)庫搜索路徑;
④ 默認的動態(tài)庫搜索路徑/lib 和 /usr/lib 倚评。
這個順序是compile gcc時寫在程序內(nèi)的浦徊,通常軟件源代碼自帶的動態(tài)庫不會太多,而我們的/lib 和 /usr/lib 只有 root 權(quán)限才可以修改天梧,而且配置文件 /etc/ld.so.conf 也是 root 的事情盔性,我們只好對 LD_LIBRARY_PATH 進行操作。
上面的 export LD_LIBRARY_PATH 是臨時設置環(huán)境變量呢岗,重啟或者打開新的shell之后冕香,所有設置都會消失,所以需要寫進 .bashrc 文件中后豫。
4. Linux中 PATH悉尾、LIBRARY_PATH、LD_LIBRARY_PATH 的區(qū)別
① PATH
目的:在任意目錄下都可以運行bin文件夾中的二進制文件硬贯、shell腳本等可執(zhí)行文件。
配置方法:只需要把bin的路徑添加到PATH中即可
vim ~/.bashrc
PATH = $PATH:~/bin
是可執(zhí)行文件路徑陨收,是三個中我們最常接觸到的饭豹,因為我們命令行中的每句能運行的命令,如ls务漩、top拄衰、ps等,都是系統(tǒng)通過PATH 找到了這個命令執(zhí)行文件的所在位置饵骨,再run 這個命令(可執(zhí)行文件)
所以anaconda和CUDA都要在新用戶的bashrc中設置 PATH翘悉。
執(zhí)行echo $PATH
能看到當前環(huán)境的PATH都配置哪些路徑。
② LIBRARY_PATH 和 LD_LIBRARY_PATH
- LIBRARY_PATH是程序編譯期間查找動態(tài)鏈接庫時指定的查找共享庫的路徑居触;
- LD_LIBRARY_PATH 是程序加載運行期間查找動態(tài)鏈接庫時指定除了系統(tǒng)默認路徑之外的其他路徑妖混。
兩者的共同點是庫,庫是這兩個路徑和PATH路徑的區(qū)別轮洋,PATH是可執(zhí)行程序制市。
兩者的差異點是使用時間不一樣。一個是編譯器弊予,對應的是開發(fā)階段祥楣,如gcc編譯;一個是加載運行期,對應點是程序已交付的使用階段误褪。
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:XXXX