“/ Usr / bin / ld: -lcudart bulunamadı”


13

Ubuntu'ya yeniyim ve Ubuntu 14.04 64 bit kullanıyorum. makeKullanan bir proje istiyorum cudave opencvçalışırken aşağıdaki hatayı aldımcmake . && 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

Bu çıktı 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

libcudartiçinde var /usr/local/cuda/lib64ve ben de Kütüphane Yolu ekledi:

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

Bu çıktı 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

Bunu ne yapmalıyım ldarama /usr/local/cuda/lib64yoluna bulmak için libcudart?


Eğer memnun edebilir ls /usr/local/cuda/lib64?
AlexGreg

Aynı soru bana da oldu. Makaleden referans: [OpenCV örneklerini IPP ile derleyen Debian: / usr / bin / ld: -llibsvml.so bulamıyor2: hata: ld 1 çıkış durumu döndürdü.] [1] [1]: stackoverflow.com/questions/ 24234961 /…
hellomzhxlp

Yanıtlar:


22

libcudaNerede ldarama yaptığına sembolik bir bağlantı yapın .

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

11

LD_LIBRARY_PATHldconfigkitaplıkları ararken yürütme sırasında ve ilgili araçların davranışını değiştirmek için kullanılır .

ldBağlayıcı aracı bu değişkeni kullanmaz. Standart olmayan bir dizinde bulunan bir kitaplığı kullanmak istiyorsanız -L, komutun parametresini şu şekilde kullanmanız gerekir :

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

İndirdiğiniz ve projeyi mevcut ve bütün derleme bozmadan mevcut Makefile'a (ler) nasıl değiştirileceğini bilmez, Çalıştırabileceğiniz Eğer yapmak aşağıdaki şekilde:

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

Değişken LDFLAGS (Makefile olarak da tanımlanabilir), ldderleme komutları tarafından başlatıldığında linker ( ) 'a belirli argümanlar iletmek için kullanılır .


1
Ne ld: warning: cannot find entry symbol _start; not setting start addresszaman ld -lcuda -L/usr/local/cuda/lib64
Arash

@Arash: Derlemeye çalıştığınız projenin istediği libcuda sürümünü yüklediniz mi?
Benoit

@Arash ile aynı problem ve evet libcuda'nın doğru versiyonuna sahibim
Mohsin Bukhari

2

Yol eklemek yerine bağlantı oluşturabilirsiniz:

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 / yok, / usr / local / lib /
Arash

1

Bunu düzelttim! Dosyanıza gidin ve değiştirin

/usr/local/cuda/

için

/usr/local/cuda-7.0

(eğer sahipsen buysa)

Benim için çalıştı


0

çözülmüş

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/

VEYA /usr/lib/cuda-10.1/targets/x86_64-linux/include dizinindeki tüm başlık dosyalarını / src / cpp /

Benim için Pop-OS 19.10'da çalıştı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.