Nvidia-docker - 在构建过程中找不到 libnvcuvid.so
Nvidia-docker - cant find libnvcuvid.so on building process
我写了一个 Docker 文件来构建我的 QT 应用程序,但我在构建时遇到了一些问题。
如果构建命令在 Docker 文件上,它会显示此错误:
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
我添加了一个符号 link 来解决临时容器上的这个错误:
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
这是我为消除其他错误所做的一些 'hacks':
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
我在最新版本上使用 nvidia cuda 8 图像 + nvidia docker,Docker 版本 17.03.1-ce。
我认为Docker文件编译过程和容器运行时没有任何区别。
图像 nvidia/cuda
没有按照我的软件构建方案要求的方式 nvidia drivers
提供,因此我必须安装与 nividia-smi
输出显示的等效的驱动器。
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
我写了一个 Docker 文件来构建我的 QT 应用程序,但我在构建时遇到了一些问题。
如果构建命令在 Docker 文件上,它会显示此错误:
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
我添加了一个符号 link 来解决临时容器上的这个错误:
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
这是我为消除其他错误所做的一些 'hacks':
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
我在最新版本上使用 nvidia cuda 8 图像 + nvidia docker,Docker 版本 17.03.1-ce。
我认为Docker文件编译过程和容器运行时没有任何区别。
图像 nvidia/cuda
没有按照我的软件构建方案要求的方式 nvidia drivers
提供,因此我必须安装与 nividia-smi
输出显示的等效的驱动器。
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