Ответ 1
попробовать:
32-бит: sudo ldconfig /usr/local/cuda/lib
64-бит: sudo ldconfig /usr/local/cuda/lib64
веселит
Я пытаюсь запустить образцы Cuda SDK, но я получаю следующую ошибку:
./bandwidthTest: error while loading shared libraries:
libcudart.so.4: cannot open shared object file:
No such file or directory
Почему я могу скомпилировать пример успешно, но не запускать его? Можно ли вручную указать путь к библиотеке времени выполнения CUDA?
попробовать:
32-бит: sudo ldconfig /usr/local/cuda/lib
64-бит: sudo ldconfig /usr/local/cuda/lib64
веселит
Сначала вам нужно объединить пути к двоичным файлам и библиотекам 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 и выше теперь устанавливается в другой каталог.
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)
Работает для меня!
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 для их исправления.
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
создайте файл nvidia_settings.conf в файле/etc/ld.so.conf.d/и добавьте путь к библиотекам в файле nvidia_settings.conf
/usr/local/cuda/lib64
/usr/local/cuda/lib
Теперь для обновления изменений выполните следующую команду:
sudo ldconfig
система найдет библиотеку с помощью инструмента ld. как говорит верхний ответ, 64-бит: sudo ldconfig/usr/local/cuda-xx/lib64;; xx - это cuda libraryedition
В моем случае я запускал приложение с использованием 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 ...