運作某個可執行檔案 .bin檔案時,産生如下錯誤:
error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
解決辦法:
首先使用ldd指令檢視這個.bin檔案需要哪些依賴庫:
ldd easyOpenposeVideo.bin
之後顯示三個依賴的.so檔案找不到:
libcudart.so.8.0 => not found
libcublas.so.8.0 => not found
libcurand.so.8.0 => not found
此時使用find指令查找這幾個.so檔案的位置,需要在/usr/目錄下查找:
find -name libcudart.so*
顯示出這個檔案的位置:
./local/cuda-8.0/lib64/libcublas.so.8.0
./local/cuda-8.0/lib64/libcublas.so
找到了依賴項的位置之後,有兩種方法解決問題。
方法1:
在自己的使用者下,執行:
vim .bashrc
打開改檔案;
在這個檔案中添加上述依賴項的位置目錄:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/
儲存并退出之後執行:
source .bashrc
使上述修改生效。之後重新運作.bin檔案,問題解決。
方法2:
用sudo權限在
/etc/ld.so.conf.d
這個目錄中建立.conf檔案,例如sudo vim cuda.conf
在這個檔案中寫入之前得到的.so檔案的位置目錄:
/usr/local/cuda/
/usr/local/cuda/lib64/
儲存并推出後,運作
ldconfig
使剛才建立的檔案生效,之後再次運作之前的.bin檔案,問題解決。