[2noise/ChatTTS]Ubuntu 上执行webui.py 遇到 libcuda.so 找不到的问题及其解决方案

2024-06-12 858 views
6
问题描述:

在Ubuntu22.04 上 执行 python webui.py,gradio 页面上生成语言会出现下面的错误

/usr/bin/ld: 找不到 -lcuda: 没有那个文件或目录
/usr/bin/ld: 当搜索用于 /lib/i386-linux-gnu/libcuda.so 时跳过不兼容的 -lcuda
/usr/bin/ld: 当搜索用于 /lib/i386-linux-gnu/libcuda.so 时跳过不兼容的 -lcuda
collect2: error: ld returned 1 exit status
分析

应该是程序运行时没有找到相应的动态库 libcuda.so, 这个cuda的动态库在 cuda 库目录下的子目录 stubs 中, 可能是这个stubs 没有加入系统的动态库路径.

解决方案

修改 ldconfig 里的cuda 配置, 添加stubs 路径. 请根据自己电脑上的cuda 版本来设置, 下面是我的环境上的例子:

sudo vim /etc/ld.so.conf/cuda-12-4.conf

# 新增一行, 保存
/usr/local/cuda-12.4/targets/x86_64-linux/lib/stubs

刷新缓存看看能否找到libcuda.so

hhk@ubuntu:~$ sudo ldconfig
hhk@ubuntu:~$ sudo ldconfig -p | grep libcuda.so
    libcuda.so.1 (libc6,x86-64) => /usr/local/cuda-12.4/targets/x86_64-linux/lib/stubs/libcuda.so.1
    ...

能找到正确的libcuda.so 了

然后再试一下执行 python webui.py, OK, 一切正常了, 而且推理速度还挺快的, 赞!

回答

5

另一种可能的方法是把 cuda 库的路径添加到 LD_LIBRARY_PATH 中, 理论上可行, 不过我还没试过 :-)

# 将下面几行添加到 ~/.bashrc 中
CUDA=/usr/local/cuda-12.4
export PATH=$CUDA/bin:$PATH
export LD_LIBRARY_PATH=$CUDA/lib64:$CUDA/lib64/stubs:$LD_LIBRARY_PATH