“/ Usr / bin / ld: impossibile trovare -lcudart”


12

Sono un principiante di Ubuntu e utilizzo Ubuntu 14.04 a 64 bit. Voglio makeun progetto che utilizza cudae opencvho ricevuto il seguente errore durante l'esecuzionecmake . && 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

Questo è l'output di 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

libcudartesiste in /usr/local/cuda/lib64e ho anche aggiunto al percorso della libreria:

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

Questo è l'output di 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

Cosa devo fare quella ldricerca nel /usr/local/cuda/lib64percorso per trovare libcudart?


puoi per favore ls /usr/local/cuda/lib64?
AlexGreg,

La stessa domanda è successa anche a me. Riferimento dall'articolo: [Debian compilando esempi OpenCV con IPP: / usr / bin / ld: impossibile trovare -llibsvml.so collect2: errore: restituito 1 stato di uscita.] [1] [1]: stackoverflow.com/questions/ 24234961 /…
hellomzhxlp,

Risposte:


20

Crea un collegamento simbolico a libcudadove lo ldsta cercando.

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

11

LD_LIBRARY_PATHviene utilizzato per modificare il comportamento degli ldconfigstrumenti correlati e durante la ricerca delle librerie, al momento dell'esecuzione.

Lo ldstrumento linker non utilizza questa variabile. Se si desidera utilizzare una libreria situata in una directory non standard, è necessario utilizzare il -Lparametro del comando, in questo modo:

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

Se avete scaricato e progetto esistente e non sa come modificare il Makefile esistente (s) senza rompere tutta la compilazione, è possibile eseguire fare nel seguente modo:

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

La variabile LDFLAGS (che può anche essere definita nel Makefile), viene utilizzata per passare argomenti specifici al linker ( ld) quando viene lanciata dalle istruzioni di compilazione.


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

@Arash: hai installato la versione di libcuda richiesta dal porject che provi a compilare?
Benoit,

stesso problema di @Arash e sì, ho la versione corretta di libcuda
Mohsin Bukhari,

2

Puoi creare collegamenti invece di aggiungere i percorsi:

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

non ho / usr / local / lib64 /, ho / usr / local / lib /
Arash

1

Ho risolto questo! Vai al tuo makefile e cambia

/usr/local/cuda/

per

/usr/local/cuda-7.0

(se è quello che hai)

Ha funzionato per me


0

risolto

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/

O copia tutti i file di intestazione da /usr/lib/cuda-10.1/targets/x86_64-linux/include in / src / cpp /

Ha funzionato per me su Pop-OS 19.10

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.