web-dev-qa-db-ja.com

「/ usr / bin / ld:-lcudartが見つかりません」

私はUbuntuの初心者で、Ubuntu 14.04 64ビットを使用しています。 makecudaおよびopencvを使用するプロジェクトにしたいcmake . && makeを実行すると次のエラーが発生しました

Linking CXX executable ground_estimation
/usr/bin/ld: cannot find -lcudart
collect2: error: ld returned 1 exit status
make[2]: *** [ground_estimation] Error 1
make[1]: *** [CMakeFiles/ground_estimation.dir/all] Error 2
make: *** [all] Error 2

これはld -lcudart --verboseの出力です

attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.a failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/local/lib64/libcudart.so failed
attempt to open //usr/local/lib64/libcudart.a failed
attempt to open //lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //lib64/libcudart.so failed
attempt to open //lib64/libcudart.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/lib64/libcudart.so failed
attempt to open //usr/lib64/libcudart.a failed
attempt to open //usr/local/lib/libcudart.so failed
attempt to open //usr/local/lib/libcudart.a failed
attempt to open //lib/libcudart.so failed
attempt to open //lib/libcudart.a failed
attempt to open //usr/lib/libcudart.so failed
attempt to open //usr/lib/libcudart.a failed

libcudart/usr/local/cuda/lib64に存在し、ライブラリパスにも追加しました:

echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:

これはls /usr/local/cuda/lib64の出力です:

libcublas_device.a   libcufftw.so.6.0.37    libnppi.so.6.0
libcublas.so         libcuinj64.so          libnppi.so.6.0.37
libcublas.so.6.0     libcuinj64.so.6.0      libnpps.so
libcublas.so.6.0.37  libcuinj64.so.6.0.37   libnpps.so.6.0
libcudadevrt.a       libcurand.so           libnpps.so.6.0.37
libcudart.so         libcurand.so.6.0       libnvblas.so
libcudart.so.6.0     libcurand.so.6.0.37    libnvblas.so.6.0
libcudart.so.6.0.37  libcusparse.so         libnvblas.so.6.0.37
libcudart_static.a   libcusparse.so.6.0     libnvToolsExt.so
libcufft.so          libcusparse.so.6.0.37  libnvToolsExt.so.1
libcufft.so.6.0      libnppc.so             libnvToolsExt.so.1.0.0
libcufft.so.6.0.37   libnppc.so.6.0         libOpenCL.so
libcufftw.so         libnppc.so.6.0.37      libOpenCL.so.1
libcufftw.so.6.0     libnppi.so

ldを見つけるには、/usr/local/cuda/lib64パスでlibcudart検索する必要がありますか?

12
Arash

libcudaへのシンボリックリンクを作成します(ldは検索しています)。

Sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
18
AlexGreg

LD_LIBRARY_PATHは、実行時にライブラリを検索するときのldconfigおよび関連ツールの動作を変更するために使用されます。

ldリンカーツールはこの変数を使用しません。標準以外のディレクトリにあるライブラリを使用する場合は、次のようにコマンドの-Lパラメーターを使用する必要があります。

ld -lcuda -L/usr/local/cuda/lib64

既存のプロジェクトをダウンロードしていて、コンパイル全体を中断せずに既存のMakefileを変更する方法がわからない場合は、makeを次の方法で実行できます。

export LDFLAGS=-L/usr/local/cuda/lib64
make

変数LDFLAGS(Makefileに定義することもできます)は、コンパイル命令によって起動されたときに特定の引数をリンカー(ld)に渡すために使用されます。

9
Benoit

パスを追加する代わりにリンクを作成できます。

ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
2
chaos

これを修正しました!メイクファイルに移動して変更します

/usr/local/cuda/

/usr/local/cuda-7.0

(それがあなたが得たものである場合)

それは私のために働いた

1
Antony Savvidi

解決済み

git clone https://github.com/inducer/pycuda.git
cd pycuda
Sudo configure --cuda-root=/usr/lib/cuda-10.1

Sudo ln -s /usr/lib/cuda-10.1/targets/x86_64-linux/include src/cpp/

または、すべてのヘッダーファイルを/usr/lib/cuda-10.1/targets/x86_64-linux/includeから/ src/cpp /にコピーします

Pop-OS 19.10で動作しました

0