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

Sono novizio di Ubuntu e utilizzo di Ubuntu 14.04 a 64 bit. Voglio make un progetto che usi cuda e opencv Ho avuto il seguente errore durante l’esecuzione di cmake . && make 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 

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 

libcudart esiste in /usr/local/cuda/lib64 e 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 che ld cerchi nel percorso /usr/local/cuda/lib64 per trovare libcudart ?

    Crea un link simbolico a libcuda dove ld sta cercando.

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

    LD_LIBRARY_PATH viene utilizzato per modificare il comportamento di ldconfig e degli strumenti correlati durante la ricerca delle librerie, al momento dell’esecuzione.

    Lo strumento ld linker non usa questa variabile. Se si desidera utilizzare una libreria situata in una directory non standard, è necessario utilizzare il parametro -L del comando, in questo modo:

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

    Se hai scaricato e un progetto esistente e non sai come modificare i Makefile esistenti senza interrompere l’intera compilazione, puoi eseguire la procedura come segue:

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

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

    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/ 

    Ho risolto questo! Vai al tuo makefile e cambia

     /usr/local/cuda/ 

    a

     /usr/local/cuda-7.0 

    (se è quello che hai)

    Ha funzionato per me