今天,因?yàn)樾枰芤粋€(gè)tensorflow1.2的代碼,被迫將cuda從10切換到了8,cudnn從7切換到5.具體做法可以參見我的另一篇文章ubuntu16.04上的cuda安裝币励、卸載以及替換.
將~/.bashrc, /etc/profile都改了以后,進(jìn)行到修改cuda.conf時(shí),發(fā)現(xiàn)/etc/ld.so.conf.d文件夾下已經(jīng)有了一個(gè)cuda-10.conf,里面的路徑是usr/local/cuda10/targetsx86_64-linux/lib. 最初,我在這個(gè)文件夾下直接又添加了一個(gè)cuda.conf文件,在文件第一行寫了/usr/local/cuda/lib64. 執(zhí)行sudo ldconfig時(shí),報(bào)錯(cuò)了.我忽略報(bào)錯(cuò),在python命令行import tensorflow,就報(bào)了"ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory".
一般來(lái)講,報(bào)這個(gè)錯(cuò)是因?yàn)閏udnn版本不對(duì),更換cudnn版本也可以參見ubuntu16.04上的cuda安裝们童、卸載以及替換這篇文章.
但是由于我已經(jīng)將cuda/lib64中的cudnn版本換成5了,所以不是這個(gè)原因,很有可能是導(dǎo)入的時(shí)候,還是搜索到了cuda-10的目錄下.
聯(lián)想到之前的報(bào)錯(cuò)信息,我將cuda-10.conf文件中第一行注釋掉,加上/usr/local/cuda/lib64這一行,再執(zhí)行l(wèi)dconfig時(shí),打出的信息顯示cudnn版本已經(jīng)換成了5.此時(shí)再import tensorflow就不會(huì)報(bào)錯(cuò)了.
ldconfig是系統(tǒng)管理動(dòng)態(tài)鏈接庫(kù)的命令,主要作用是在默認(rèn)搜索目錄(lib和/usr/lib)以及動(dòng)態(tài)庫(kù)配置文件/etc/ld.so.conf內(nèi)所列目錄下,搜索出可共享的動(dòng)態(tài)鏈接庫(kù). 之前運(yùn)行l(wèi)dconfig報(bào)錯(cuò),應(yīng)該是因?yàn)閏uda-10.conf中的路徑不可用,因此也沒有繼續(xù)在后面的文件中搜索.我刪掉cuda-10.conf,只保留cuda.conf,再執(zhí)行l(wèi)dconfig,import tensorflow也沒有再報(bào)錯(cuò).問題解決.~.~