"/usr/bin/ld: не удается найти -lcudart"

Я новичок в Ubuntu и использую 64-разрядную версию Ubuntu 14.04. Я хочу make проект, который использует cuda и opencv Я получил следующую ошибку при запуске cmake . && make

Linking CXX executable ground_estimation/usr/bin/ld: cannot find -lcudartcollect2: error: ld returned 1 exit statusmake[2]: *** [ground_estimation] Error 1make[1]: *** [CMakeFiles/ground_estimation.dir/all] Error 2make: *** [all] Error 2

Это результат работы ld -lcudart --verbose

attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.so failedattempt to open /usr/x86_64-linux-gnu/lib64/libcudart.a failedattempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.so failedattempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.a failedattempt to open //usr/local/lib64/libcudart.so failedattempt to open //usr/local/lib64/libcudart.a failedattempt to open //lib/x86_64-linux-gnu/libcudart.so failedattempt to open //lib/x86_64-linux-gnu/libcudart.a failedattempt to open //lib64/libcudart.so failedattempt to open //lib64/libcudart.a failedattempt to open //usr/lib/x86_64-linux-gnu/libcudart.so failedattempt to open //usr/lib/x86_64-linux-gnu/libcudart.a failedattempt to open //usr/lib64/libcudart.so failedattempt to open //usr/lib64/libcudart.a failedattempt to open //usr/local/lib/libcudart.so failedattempt to open //usr/local/lib/libcudart.a failedattempt to open //lib/libcudart.so failedattempt to open //lib/libcudart.a failedattempt to open //usr/lib/libcudart.so failedattempt 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.0libcublas.so         libcuinj64.so          libnppi.so.6.0.37libcublas.so.6.0     libcuinj64.so.6.0      libnpps.solibcublas.so.6.0.37  libcuinj64.so.6.0.37   libnpps.so.6.0libcudadevrt.a       libcurand.so           libnpps.so.6.0.37libcudart.so         libcurand.so.6.0       libnvblas.solibcudart.so.6.0     libcurand.so.6.0.37    libnvblas.so.6.0libcudart.so.6.0.37  libcusparse.so         libnvblas.so.6.0.37libcudart_static.a   libcusparse.so.6.0     libnvToolsExt.solibcufft.so          libcusparse.so.6.0.37  libnvToolsExt.so.1libcufft.so.6.0      libnppc.so             libnvToolsExt.so.1.0.0libcufft.so.6.0.37   libnppc.so.6.0         libOpenCL.solibcufftw.so         libnppc.so.6.0.37      libOpenCL.so.1libcufftw.so.6.0     libnppi.so

Что я должен сделать, чтобы ld поиск в /usr/local/cuda/lib64 путь, который нужно найти libcudart?

Создайте символическую ссылку на libcuda где ld ищет его.

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

LD_LIBRARY_PATH используется для изменения поведения ldconfig и связанные с ними инструменты при поиске библиотек во время выполнения.

То ld инструмент компоновщика не использует эту переменную. Если вы хотите использовать библиотеку, расположенную в нестандартном каталоге, вы должны использовать -L параметр команды, например, такой :

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

Если вы загрузили и существующий проект и не знаете, как изменить существующий Makefile (ы), не нарушая всю компиляцию, вы можете запустить делать следующим образом :

export LDFLAGS=-L/usr/local/cuda/lib64make

Переменная LDFLAGS (которая также может быть определена в файле Makefile) используется для передачи определенных аргументов компоновщику (ld) при запуске с помощью инструкций компиляции.

Вы можете создавать ссылки вместо добавления путей:

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

Я все исправил! Перейдите в свой makefile и измените

/usr/local/cuda/

к

/usr/local/cuda-7.0

(если это то, что у тебя есть)

Это сработало для меня

Решенный

git clone https://github.com/inducer/pycuda.gitcd pycudasudo configure --cuda-root=/usr/lib/cuda-10.1sudo ln -s /usr/lib/cuda-10.1/targets/x86_64-linux/include src/cpp/

Или скопируйте все заголовочные файлы из /usr/lib/cuda-10.1/targets/x86_64-linux/include в /src/cpp/

Это сработало для меня на Pop-OS 19.10

не могли бы вы, пожалуйста, “ls /usr/local/cuda/lib64”?

Тот же вопрос возник и у меня. Ссылка из статьи:

Debian компилирует примеры OpenCV с помощью IPP: /usr/bin/ld: не удается найти -llibsvml.so collect2: ошибка: ld вернул 1 статус выхода.