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


12

私はUbuntuの初心者で、Ubuntu 14.04 64ビットを使用しています。私がしたいmake用途にそのプロジェクトcudaopencv実行しているとき、私は、次のエラーを得ました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/lib64libcudart


お願いできますls /usr/local/cuda/lib64か?
AlexGreg 14

同じ質問が私にも起こりました。記事からの参照:[IPPを使用したOpenCVサンプルのコンパイル:/ usr / bin / ld:-llibsvml.so collect2が見つかりません:エラー:ldは1終了ステータスを返しました。] [1] [1]:stackoverflow.com/questions/ 24234961 /…
hellomzhxlp 14年

回答:


20

検索するlibcuda場所へのシンボリックリンクを作成ldします。

sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so

11

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

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

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

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

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

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


1
私が持ってld: warning: cannot find entry symbol _start; not setting start address実行したときにld -lcuda -L/usr/local/cuda/lib64
アラシュ

@Arash:コンパイルしようとするプロジェクトによって要求されたlibcudaのバージョンをインストールしましたか?
ブノワ14

同じ@Arashとして問題とはい、私はlibcudaの正しいバージョンを持っている
Mohsinブハーリー

2

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

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

私はは/ usr / local / lib64に/、私は持っては/ usr / local / lib /持っていません
アラシュ

1

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

/usr/local/cuda/

/usr/local/cuda-7.0

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

それは私のために働いた


0

解決済み

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で動作しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.