“/ Usr / bin / ld: tidak dapat menemukan -lcudart”

12

Saya pemula untuk Ubuntu dan menggunakan Ubuntu 14.04 64-bit. Saya ingin makeproyek yang menggunakan cudadan opencvsaya mendapatkan kesalahan berikut saat menjalankancmake . && 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

Ini adalah output dari 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

libcudartada di /usr/local/cuda/lib64dan saya juga menambahkan ke Jalur Perpustakaan:

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

Ini adalah output dari 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

Apa yang harus saya lakukan untuk ldmencari di /usr/local/cuda/lib64jalur pencarian libcudart?

Arash
sumber
dapat Anda silahkan ls /usr/local/cuda/lib64?
AlexGreg
Pertanyaan yang sama terjadi pada saya juga. Referensi dari artikel: [Debian mengkompilasi contoh OpenCV dengan IPP: / usr / bin / ld: tidak dapat menemukan -llibsvml.so collect2: error: ld mengembalikan 1 status keluar.] [1] [1]: stackoverflow.com/questions/ 24234961 / ...
hellomzhxlp

Jawaban:

20

Buat tautan simbolis ke libcudatempat ldmencarinya.

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

LD_LIBRARY_PATHdigunakan untuk memodifikasi perilaku ldconfigdan alat terkait ketika mencari perpustakaan, pada waktu eksekusi.

Alat ldtautan tidak menggunakan variabel ini. Jika Anda ingin menggunakan pustaka yang terletak di direktori non-standar, Anda harus menggunakan -Lparameter perintah, seperti ini:

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

Jika Anda telah mengunduh dan proyek yang ada dan tidak tahu cara memodifikasi Makefile yang ada tanpa merusak keseluruhan kompilasi, Anda dapat menjalankan make dengan cara berikut:

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

LDFLAGS variabel (yang juga dapat didefinisikan ke dalam Makefile), digunakan untuk meneruskan argumen spesifik ke linker ( ld) ketika diluncurkan oleh kompilasi intructions.

Benoit
sumber
1
Saya dapat ld: warning: cannot find entry symbol _start; not setting start addresssaat menjalankanld -lcuda -L/usr/local/cuda/lib64
Arash
@Arash: apakah Anda menginstal versi libcuda yang diminta oleh porject yang Anda coba kompilasi?
Benoit
masalah yang sama dengan @Arash dan ya saya memiliki versi libcuda yang benar
Mohsin Bukhari
2

Anda dapat membuat tautan alih-alih menambahkan jalur:

ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
kekacauan
sumber
saya tidak punya / usr / local / lib64 /, saya punya / usr / local / lib /
Arash
1

Saya perbaiki ini! Pergi ke makefile Anda dan ubah

/usr/local/cuda/

untuk

/usr/local/cuda-7.0

(jika itu yang Anda dapat)

Ini berhasil untuk saya

Antony Savvidi
sumber
0

Terpecahkan

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/

ATAU salin semua file header dari /usr/lib/cuda-10.1/targets/x86_64-linux/include ke / src / cpp /

Ini bekerja untuk saya di Pop-OS 19.10

Ghanshyam Chandra
sumber