26

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

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

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

4

8 に答える 8

79

試す:

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

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

乾杯

于 2012-10-02T21:21:39.370 に答える
12

まず必要なのは、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 以降は別のディレクトリにインストールされるようになりました。

于 2012-05-30T03:24:18.593 に答える
5

LD_LIBRARY_PATH は強く推奨されていません。他のプログラムが台無しになる可能性があり、他のプログラムがリセットする可能性があります。テスト目的で永続的なパスを一時的にオーバーライドするためにのみ使用する必要があります(私の言葉を信じないでください、ググってください)。

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

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

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

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

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

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

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

于 2012-06-09T00:54:03.377 に答える
2

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

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

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

sudo ldconfig
于 2013-07-30T03:53:18.833 に答える
1
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
于 2013-07-25T12:24:25.037 に答える
0

私の場合、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 ...
于 2016-03-07T20:39:49.583 に答える
0

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

于 2014-10-05T13:24:08.447 に答える