2017-05-23 16 views
0

私のQTアプリケーションを構築するDockerfileを作成しましたが、ビルドにいくつか問題があります。Nvidia-docker - ビルドプロセスでlibnvcuvid.soが見つかりません

ビルドコマンドがDockerfile上にある場合、それはこのエラーをtrhows:

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キーのいくつかは次のとおりです。

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画像を使用しています:

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 

これは私が他のエラーを取り除くためにやった 'ハック' の一部です+ nvidiaドッカー、ドッカーバージョン17.03.1-ce。

私は、Dockerfileのコンパイルプロセスとコンテナのランタイムには何の違いもないと思っていました。

+1

このライブラリはCUDAの一部ではありません。それはNVIDIAドライバと一緒に出荷されます – talonmies

答えて

0

画像nvidia/cudaにはnvidia driversソフトウェアのビルド方法には付属していないので、ドライブにはnividia-smiの出力と同じものをインストールする必要がありました。

apt-get install -y nvidia-381 

私は将来的にいくつかの問題を抱えているかもしれないことは知っていますが、これは現在の方法です。

nvidia-381パッケージには多くの依存関係があり、CUDAパッケージからlibcuda.soが削除されたため、多くの警告が出されたため、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 
+1

これは 'nvidia-docker'でかなり強いです。 'nvidia-docker 'の全ポイントは、ドッカーのイメージやドッカーファイルにドライバをインストールする必要がないからです。とにかくそれを行うなら、あなたは 'nvidia-docker'に付属している柔軟性を壊しています。別のアプローチについては、[here](https://github.com/NVIDIA/nvidia-docker/issues/103)を参照してください。 –