Я новичок в Ubuntu и использую Ubuntu 14.04 64-bit. Я хочу, чтобы make
проект, который использует, cuda
и opencv
я получил следующую ошибку при запуске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
Это вывод 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
существует в, /usr/local/cuda/lib64
и я также добавил в путь к библиотеке:
echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:
Это вывод 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
Что я должен сделать этот ld
поиск в /usr/local/cuda/lib64
пути, чтобы найти libcudart
?
ls /usr/local/cuda/lib64
?Ответы:
Сделайте символическую ссылку,
libcuda
гдеld
ищет его.источник
LD_LIBRARY_PATH
используется для изменения поведенияldconfig
соответствующих инструментов при поиске библиотек во время выполнения.Инструмент
ld
компоновщика не использует эту переменную. Если вы хотите использовать библиотеку, расположенную в нестандартном каталоге, вы должны использовать-L
параметр команды, например:Если вы скачали существующий проект и не знаете, как изменить существующие Makefile (ы), не нарушая всю компиляцию, вы можете запустить make следующим образом:
Переменная LDFLAGS (которая также может быть определена в Makefile), используется для передачи определенных аргументов компоновщику (
ld
) при запуске средствами компиляции.источник
ld: warning: cannot find entry symbol _start; not setting start address
когда бегуld -lcuda -L/usr/local/cuda/lib64
Вы можете создавать ссылки вместо добавления путей:
источник
Я исправил это! Перейдите в свой make-файл и измените
в
(если это то, что вы получили)
У меня сработало
источник
решаемая
ИЛИ скопируйте все файлы заголовков из /usr/lib/cuda-10.1/targets/x86_64-linux/include в / src / cpp /
У меня это работало на Pop-OS 19.10
источник