개발 이야기/머신러닝, 딥러닝

[문제해결] Linux Cudnn 설치 시 ldconfig.real: libcudnn.so.8 is not a symbolic link

AI 동키 2021. 8. 10. 10:00
반응형

아래 링크의 블로그를 보며 Cudnn을 설치 하던 중 오류가 발생하여 해결한 솔루션을 남긴다.

https://webnautes.tistory.com/1479

 

Ubuntu 20.04에 CUDA 11.2, cuDNN 8.1.0, OpenCV 4.5.1 설치

Ubuntu 20.04에 CUDA 11.2, cuDNN 8.1.0, OpenCV 4.5.1을 설치하는 방법을 다룹니다. NVIDIA 그래픽 카드 드라이버 설치 CUDA 11.2 설치 cuDNN 8.1.0 설치 OpenCV 4.5.1 설치   2021. 04. 24 최초작성 2021. 05...

webnautes.tistory.com

 

설치환경

Ubuntu 20.04 WSL2

CUDA 11.4

Cudnn 8.2.2

 

문제

Cudnn을 다운받아 압축을 풀고, 복사 한후 경로 설정을 해 주고나서

sudo ldconfig을 치면 다음과 같은 오류가 발생

$ sudo ldconfig
/sbin/ldconfig.real: /usr/local/cuda/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link

 

해결

이는 Cudnn 카피 시 Symbolic link가 사라지기 때문임. 이를 다시 설정해주면 해결됨.

자신의 CUDA 버전에 맞는 폴더로 이동

$ cd /usr/local/cuda-11.4/lib64

아래와 같이 검색을 해주면

$ ls -lha libcudnn*

심볼릭 링크 ->

제일 상단에 libcudnn.so, so.8, so.8.2.2 파일들에 링크가 없는걸 볼 수 있음.

우리가 복사하면서 사라진 거임. 이걸 다시 만들어줘야함.

-rwxr-xr-x 1 root root 155K Aug 10 09:22 libcudnn.so
-rwxr-xr-x 1 root root 155K Aug 10 09:22 libcudnn.so.8
-rwxr-xr-x 1 root root 155K Aug 10 09:22 libcudnn.so.8.2.2
-rwxr-xr-x 1 root root 124M Aug 10 09:22 libcudnn_adv_infer.so
lrwxrwxrwx 1 root root   73 Aug 10 09:32 libcudnn_adv_infer.so.8 -> /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.2.2
-rwxr-xr-x 1 root root 124M Aug 10 09:22 libcudnn_adv_infer.so.8.2.2
-rwxr-xr-x 1 root root  94M Aug 10 09:22 libcudnn_adv_train.so
lrwxrwxrwx 1 root root   73 Aug 10 09:35 libcudnn_adv_train.so.8 -> /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.2.2
-rwxr-xr-x 1 root root  94M Aug 10 09:22 libcudnn_adv_train.so.8.2.2
-rwxr-xr-x 1 root root 656M Aug 10 09:22 libcudnn_cnn_infer.so
lrwxrwxrwx 1 root root   73 Aug 10 09:32 libcudnn_cnn_infer.so.8 -> /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.2.2
-rwxr-xr-x 1 root root 656M Aug 10 09:22 libcudnn_cnn_infer.so.8.2.2
-rwxr-xr-x 1 root root 812M Aug 10 09:22 libcudnn_cnn_infer_static.a
-rwxr-xr-x 1 root root 812M Aug 10 09:23 libcudnn_cnn_infer_static_v8.a
-rwxr-xr-x 1 root root  89M Aug 10 09:23 libcudnn_cnn_train.so
lrwxrwxrwx 1 root root   73 Aug 10 09:32 libcudnn_cnn_train.so.8 -> /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.2.2
-rwxr-xr-x 1 root root  89M Aug 10 09:23 libcudnn_cnn_train.so.8.2.2
-rwxr-xr-x 1 root root 133M Aug 10 09:23 libcudnn_cnn_train_static.a
-rwxr-xr-x 1 root root 133M Aug 10 09:23 libcudnn_cnn_train_static_v8.a
-rwxr-xr-x 1 root root 368M Aug 10 09:23 libcudnn_ops_infer.so
lrwxrwxrwx 1 root root   73 Aug 10 09:32 libcudnn_ops_infer.so.8 -> /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.2.2
-rwxr-xr-x 1 root root 368M Aug 10 09:23 libcudnn_ops_infer.so.8.2.2
-rwxr-xr-x 1 root root  57M Aug 10 09:23 libcudnn_ops_train.so
lrwxrwxrwx 1 root root   73 Aug 10 09:32 libcudnn_ops_train.so.8 -> /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.2.2
-rwxr-xr-x 1 root root  57M Aug 10 09:23 libcudnn_ops_train.so.8.2.2
-rwxr-xr-x 1 root root 1.3G Aug 10 09:23 libcudnn_static.a

아래와 같이 명령어를 입력 해주자.

$ sudo ln -sf libcudnn.so.8.2.2 libcudnn.so.8
$ sudo ln -sf libcudnn.so.8 libcudnn.so

그 다음 다시 검색해보면

ls -al libcudnn.so*

심볼릭 링크가 형성됨

lrwxrwxrwx 1 root root     13 Aug 10 09:41 libcudnn.so -> libcudnn.so.8
lrwxrwxrwx 1 root root     17 Aug 10 09:41 libcudnn.so.8 -> libcudnn.so.8.2.2
-rwxr-xr-x 1 root root 158392 Aug 10 09:22 libcudnn.so.8.2.2

 

다음의 명령어를 입력했을 때,

ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn

아래와 같이 나오면 해결 된 것임.

        libcudnn_cnn_train.so.8 -> libcudnn_cnn_train.so.8.2.2
        libcudnn_ops_infer.so.8 -> libcudnn_ops_infer.so.8.2.2
        libcudnn.so.8 -> libcudnn.so.8.2.2
        libcudnn_cnn_infer.so.8 -> libcudnn_cnn_infer.so.8.2.2
        libcudnn_adv_train.so.8 -> libcudnn_adv_train.so.8.2.2
        libcudnn_ops_train.so.8 -> libcudnn_ops_train.so.8.2.2
        libcudnn_adv_infer.so.8 -> libcudnn_adv_infer.so.8.2.2

 

감사합니다.

반응형