WSL libcuda.so.1 is not a symbolic link 的解决方法

984 阅读1分钟

问题描述

在使用 WSL 更新软件包的时候经常会遇到这样一个报错

/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link 

意思是说 /usr/lib/wsl/lib/libcuda.so.1 不是一个符号链接。

问题分析

通过名字可以判断这应该是nVidia显卡驱动相关的库,进入 /usr/lib/wsl/lib/ 目录,可以看到有 libcuda.solibcuda.so.1libcuda.so.1.1 三个文件,都是文件形式,而通过报错我们知道 libcuda.solibcuda.so.1 应该是符号链接文件。

它们关系应该是:

libcuda.so -> libcuda.so.1 -> libcuda.so.1.1

知道原因就好解决了,把 libcuda.solibcuda.so.1 删掉,再重新创建符号链接就可以了。

C:>cd C:\Windows\System32\lxss\lib
C:\Windows\System32\lxss\lib>del /s /q "libcuda.so"
C:\Windows\System32\lxss\lib>del /s /q "libcuda.so.1"
C:\Windows\System32\lxss\lib>mklink libcuda.so.1 libcuda.so.1.1
C:\Windows\System32\lxss\lib>mklink libcuda.so libcuda.so.1


cd C:\Windows\System32\lxss\lib
rm libcuda.so
rm libcuda.so.1
wsl -e /bin/bash
ln -s libcuda.so.1.1 libcuda.so.1
ln -s libcuda.so.1.1 libcuda.so


$ sudo ldconfig