Подтвердить что ты не робот

Почему libcudart.so.4 не может быть найден при компиляции образцов CUDA под Ubuntu?

Я пытаюсь запустить образцы Cuda SDK, но я получаю следующую ошибку:

./bandwidthTest: error while loading shared libraries:
                 libcudart.so.4: cannot open shared object file:
                 No such file or directory

Почему я могу скомпилировать пример успешно, но не запускать его? Можно ли вручную указать путь к библиотеке времени выполнения CUDA?

4b9b3361

Ответ 1

попробовать:

32-бит: sudo ldconfig /usr/local/cuda/lib

64-бит: sudo ldconfig /usr/local/cuda/lib64

веселит

Ответ 2

Сначала вам нужно объединить пути к двоичным файлам и библиотекам CUDA. Это просто делается путем добавления следующих строк в ваш .bashrc файл.

export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=:/usr/local/cuda/lib64

Если вы используете 32-разрядную версию операционной системы lib64 для lib

Во-вторых, в каталоге /usr/lib или/usr/lib64 должны быть установлены общие файлы объектов, в зависимости от вашей операционной системы. Эти объектные файлы должны содержаться в каталоге под названием "nvidia". Два файла, которые мы имеем в виду, это имена libcuda.so.drivernumber и libOpenCL.so.somenumber. Чтобы различать фактические файлы общих объектов, просто используйте ls -l. Символьные ссылки покажут, к чему они фактически привязаны.

В качестве пользователя root выполните следующие команды:

ln -s /usr/lib64/nvidia/libcuda.so.somenumber /usr/lib64/libcuda.so
ln -s /usr/lib64/nvidia/libOpenCL.so.somenumber /usr/lib64/libOpenCL.so

Это должно позволить вам скомпилировать все источники в SDK.

Как и в случае с Cuda 5.5 и Ubuntu 12.04/12.10, команда выше становится (обратите внимание на изменения каталога Ubuntu и Cuda) для 64-битного

ln -s /usr/local/cuda/lib64/libcuda.so.5.5 /usr/lib/libcuda.so.5.5

То есть, папки lib на Ubuntu с 12.04 являются lib32 и lib; 64 неявно, а cuda 5.5 и выше теперь устанавливается в другой каталог.

Ответ 3

1 ошибка при загрузке разделяемых библиотек: libcudart.so.6.0: невозможно открыть файл общих объектов: нет такого файла или каталога

  32-bit: sudo ldconfig /usr/local/cuda/lib

  64-bit: sudo ldconfig /usr/local/cuda/lib64

(см. http://blog.csdn.net/shenchong721/article/details/21529295)

Работает для меня!

Ответ 4

LD_LIBRARY_PATH сильно устарела. Это может испортить другие программы, а другие могут reset его. Его следует использовать только для временного переопределения постоянных путей для целей тестирования (не верьте мне на слово, google it).

Вместо этого добавьте строку с вашим каталогом cuda lib на нее в /etc/ld.so.conf после любых существующих строк.

Например, если вы установили на /usr/local/cuda, вам нужно будет добавить

32-бит:/usr/local/cuda/lib

64-бит:/usr/local/cuda/lib64

Сохраните и запустите ldconfig. Это должно постоянно устранять проблему.

Символические ссылки, вероятно, уже настроены установкой. Если нет, добавьте их, как сообщил Алекс.

Примечание. Я получил ошибки, ссылающиеся на /lib, но мне нужно было добавить lib64 для их исправления.

Ответ 5

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib

или если вы используете cuda-5.0 на 64-разрядной машине

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.0/lib64

Ответ 6

создайте файл nvidia_settings.conf в файле/etc/ld.so.conf.d/и добавьте путь к библиотекам в файле nvidia_settings.conf

 /usr/local/cuda/lib64
 /usr/local/cuda/lib

Теперь для обновления изменений выполните следующую команду:

sudo ldconfig

Ответ 7

система найдет библиотеку с помощью инструмента ld. как говорит верхний ответ, 64-бит: sudo ldconfig/usr/local/cuda-xx/lib64;; xx - это cuda libraryedition

Ответ 8

В моем случае я запускал приложение с использованием MPI. Ошибка:

libcudart.so.7: cannot open shared object file

CUDA была правильно установлена ​​во всех узлах. Кроме того, как и в предыдущих ответах, переменные $PATH и $LD_LIBRARY_PATH указывали на двоичные файлы и библиотеки соответственно.

Передача $PATH и $LD_LIBRARY_PATH в команде MPI решила проблему.

mpirun -x PATH=$PATH -x LD_LIBRARY_PATH=$LD_LIBRARY_PATH ...