私はUbuntuの初心者で、Ubuntu 14.04 64ビットを使用しています。 make
とcuda
および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
検索する必要がありますか?
libcuda
へのシンボリックリンクを作成します(ld
は検索しています)。
Sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
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
)に渡すために使用されます。
パスを追加する代わりにリンクを作成できます。
ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
これを修正しました!メイクファイルに移動して変更します
/usr/local/cuda/
に
/usr/local/cuda-7.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で動作しました