"/ Usr / bin / ld: no se puede encontrar -lcudart"


12

Soy novato en Ubuntu y uso Ubuntu 14.04 de 64 bits. Quiero makeun proyecto que use cuday opencvrecibí el siguiente error al ejecutarcmake . && 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

Esta es la salida de 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

libcudartexiste /usr/local/cuda/lib64y también agregué a Library Path:

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

Esta es la salida de 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

¿Qué debo hacer esa ldbúsqueda en el /usr/local/cuda/lib64camino para encontrar libcudart?


puedes por favor ls /usr/local/cuda/lib64?
AlexGreg

La misma pregunta me pasó a mí también. Referencia del artículo: [Debian compilando ejemplos de OpenCV con IPP: / usr / bin / ld: no se puede encontrar -llibsvml.so collect2: error: ld devolvió 1 estado de salida.] [1] [1]: stackoverflow.com/questions/ 24234961 / ...
hellomzhxlp

Respuestas:


20

Haga un enlace simbólico a libcudadonde lo ldestá buscando.

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

11

LD_LIBRARY_PATHse utiliza para modificar el comportamiento de las ldconfigherramientas relacionadas y al buscar las bibliotecas, en el momento de la ejecución.

La ldherramienta de enlace no utiliza esta variable. Si desea usar una biblioteca ubicada en un directorio no estándar, debe usar el -Lparámetro del comando, así:

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

Si ha descargado un proyecto existente y no sabe cómo modificar los Makefile (s) existentes sin romper la compilación completa, puede ejecutar make de la siguiente manera:

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

La variable LDFLAGS (que también se puede definir en el Makefile), se utiliza para pasar argumentos específicos al enlazador ( ld) cuando se inicia mediante las instrucciones de compilación.


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

@Arash: ¿instaló la versión de libcuda solicitada por el proyecto que intenta compilar?
Benoit

mismo problema que @Arash y sí, tengo la versión correcta de libcuda
Mohsin Bukhari

2

Puede crear enlaces en lugar de agregar las rutas:

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

no tengo / usr / local / lib64 /, tengo / usr / local / lib /
Arash

1

¡Arreglé esto! Ve a tu archivo MAKE y cambia

/usr/local/cuda/

a

/usr/local/cuda-7.0

(si eso es lo que tienes)

Funciono para mi


0

Resuelto

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 copie todos los archivos de encabezado de /usr/lib/cuda-10.1/targets/x86_64-linux/include a / src / cpp /

Me funcionó en Pop-OS 19.10

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.