Soy novato en Ubuntu y uso Ubuntu 14.04 de 64 bits. Quiero make
un proyecto que use cuda
y opencv
recibí 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
libcudart
existe /usr/local/cuda/lib64
y 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 ld
búsqueda en el /usr/local/cuda/lib64
camino para encontrar libcudart
?
ls /usr/local/cuda/lib64
?Respuestas:
Haga un enlace simbólico a
libcuda
donde lold
está buscando.fuente
LD_LIBRARY_PATH
se utiliza para modificar el comportamiento de lasldconfig
herramientas relacionadas y al buscar las bibliotecas, en el momento de la ejecución.La
ld
herramienta de enlace no utiliza esta variable. Si desea usar una biblioteca ubicada en un directorio no estándar, debe usar el-L
parámetro del comando, así: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:
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.fuente
ld: warning: cannot find entry symbol _start; not setting start address
cuando corrold -lcuda -L/usr/local/cuda/lib64
Puede crear enlaces en lugar de agregar las rutas:
fuente
¡Arreglé esto! Ve a tu archivo MAKE y cambia
a
(si eso es lo que tienes)
Funciono para mi
fuente
Resuelto
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
fuente