Nvidia-docker - 无法在建设过程中找到libnvcuvid.so

时间:2017-05-23 10:12:13

标签: docker nvidia nvidia-docker

我编写了一个构建我的QT应用程序的Dockerfile,我在构建时遇到了一些问题。

如果构建命令在Dockerfile上,则会显示此错误:

ninja: error: '/usr/lib/x86_64-linux-gnu/libnvcuvid.so', needed by 'bin/x64/release/*****/librtmpPlugin.so', missing and no known rule to make it

我在临时容器上添加了一个解决此错误的符号链接:

ln -s /usr/local/nvidia/lib64/libnvcuvid.so.1 /usr/lib/x86_64-linux-gnu/libnvcuvid.so

但是当我再次添加该行并进行构建时,我仍然遇到同样的错误。

首先我认为这是因为有些缓存来自悬空图像,但清理所有问题仍然存在。

这是我的一些ENV键:

ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64
ENV LIBRARY_PATH /usr/local/cuda/lib64/stubs:${LIBRARY_PATH}
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
ENV OPENCL_HEADERS /usr/local/cuda/include
ENV LIBOPENCL /usr/local/cuda/lib64
ENV CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda
ENV CUDA_NVCC_EXECUTABLE /usr/bin/nvcc

这是我为消除其他错误所做的一些'黑客攻击':

RUN mv /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-inux-gnu/libOpenCL.so.1_old
RUN ln -s /usr/local/cuda/lib64/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
RUN ln -s /usr/local/cuda-8.0/targets/x86_64-linux/lib/stubs/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so
RUN ln -s /usr/local/cuda-8.0/targets/x86_64-linux/lib/stubs/libnvidia-ml.so /usr/lib/x86_64-linux-gnu/libnvidia-ml.so

我在最后一个版本,Docker版本17.03.1-ce上使用了nvidia cuda 8 image + nvidia docker。

我认为Dockerfile编译过程和容器运行时没有任何区别。

1 个答案:

答案 0 :(得分:1)

图片nvidia/cuda没有nvidia drivers我的软件构建方案所需的方式,所以我必须安装相当于nividia-smi输出显示的驱动器。< / p>

apt-get install -y nvidia-381

我知道未来可能会遇到一些问题,但现在就是这样。

我还必须重命名libcuda.so,因为nvidia-381软件包有很多依赖项并从CUDA软件包中删除了libcuda.so,我开始收到很多警告。

RUN mv /usr/lib/x86_64-linux-gnu/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so_old
RUN ln -s /usr/local/cuda-8.0/targets/x86_64-linux/lib/stubs/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so