web-dev-qa-db-ja.com

UbuntuでCUDAサンプルをコンパイルするときにlibcudart.so.4が見つからないのはなぜですか?

Cuda SDKサンプルを実行しようとしていますが、次のエラーが表示されます。

./bandwidthTest: error while loading shared libraries:
                 libcudart.so.4: cannot open shared object file:
                 No such file or directory

サンプルを正常にコンパイルできるのに実行できないのはなぜですか? CUDAランタイムライブラリへのパスを手動で指定する方法はありますか?

26
Alex

試してください:

32ビット:Sudo ldconfig /usr/local/cuda/lib

64ビット:Sudo ldconfig /usr/local/cuda/lib64

乾杯

79
Edgar

最初に必要なのは、CUDAバイナリとライブラリへのパスを連結することです。これは、.bashrcファイルに次の行を追加することで簡単に実行できます。

export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=:/usr/local/cuda/lib64

32ビットオペレーティングシステムを使用している場合は、lib64をlibに変更します

次に、オペレーティングシステムに応じて、/ usr/libまたは/ usr/lib64に共有オブジェクトファイルがインストールされている必要があります。これらのオブジェクトファイルは、「nvidia」というディレクトリに含まれている必要があります。関係する2つのファイルは、libcuda.so.drivernumberとlibOpenCL.so.somenumberという名前です。実際の共有オブジェクトファイルを区別するには、ls -l。シンボリックリンクは、実際にリンクしているものを示します。

Rootとして、次のコマンドを実行します。

ln -s /usr/lib64/nvidia/libcuda.so.somenumber /usr/lib64/libcuda.so
ln -s /usr/lib64/nvidia/libOpenCL.so.somenumber /usr/lib64/libOpenCL.so

これにより、SDKのすべてのソースをコンパイルできます。

Cuda 5.5およびUbuntu 12.04/12.10の時点で、上記のコマンドは64ビットで(UbuntuおよびCudaディレクトリの変更に注意してください)

ln -s /usr/local/cuda/lib64/libcuda.so.5.5 /usr/lib/libcuda.so.5.5

つまり、12.04の時点でUbuntuのlibフォルダーはlib32とlibです。 64は暗黙的であり、cuda 5.5以降は別のディレクトリにインストールされます。

12
sj755

共有ライブラリのロード中に1エラー:libcudart.so.6.0:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません

  32-bit: Sudo ldconfig /usr/local/cuda/lib

  64-bit: Sudo ldconfig /usr/local/cuda/lib64

(参照: http://blog.csdn.net/shenchong721/article/details/21529295

私のために働く!

6
Jaime.Fernandez

LD_LIBRARY_PATHは非推奨です。他のプログラムを台無しにしたり、他の人がそれをリセットする可能性があります。テスト目的で永続的なパスを一時的にオーバーライドするためにのみ使用する必要があります(Wordを使用しないで、グーグルで検索してください)。

代わりに、既存の行の後に、cuda libディレクトリを含む行を/etc/ld.so.confに追加します。

たとえば、/ usr/local/cudaにインストールした場合、追加する必要があります

32ビット:/ usr/local/cuda/lib

64ビット:/ usr/local/cuda/lib64

保存して、ldconfigを実行します。これにより、問題が完全に修正されます。

シンボリックリンクは、おそらくインストールによって既にセットアップされています。そうでない場合は、アレックスのアドバイスに従って追加します。

注-/ libを参照するエラーを受け取りましたが、lib64を追加して修正する必要がありました。

5

/etc/ld.so.conf.d/にnvidia_settings.confファイルを作成し、nvidia_settings.confファイルにlibsへのパスを追加します

 /usr/local/cuda/lib64
 /usr/local/cuda/lib

変更を更新するには、次のコマンドを実行します。

Sudo ldconfig
2
surendran
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib

または、64ビットマシンでcuda-5.0を実行している場合

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.0/lib64
1
rodms

システムは、ldツールを使用してライブラリを検索します。一番上の答えにあるように、64ビット:Sudo ldconfig/usr/local/cuda-xx/lib64 ;; xxはcuda libraryeditionです

0
dzhwinter

私の場合、MPIを使用してアプリケーションを実行していました。エラーは:

libcudart.so.7: cannot open shared object file

CUDAはすべてのノードに適切にインストールされました。また、前の回答のように、変数$ PATHと$ LD_LIBRARY_PATHはそれぞれバイナリとライブラリを指していました。

MPIコマンドで$ PATHおよび$ LD_LIBRARY_PATHを渡すことで問題が解決しました。

mpirun -x PATH=$PATH -x LD_LIBRARY_PATH=$LD_LIBRARY_PATH ...
0
user9869932