Я пытаюсь отладить программу CUDA, но когда я запускаю gdb
вот так:
$ gdb -i=mi <program name>
$ r <program arguments>
Я собираюсь:
/home/wvxvw/Projects/cuda/exercise-1-udacity/cs344/HW2/hw:
error while loading shared libraries: libcudart.so.5.0:
cannot open shared object file: No such file or directory
Process gdb-inferior killed
(отформатирован для удобства чтения)
(Я использую GDB, используя М-хgdb
) Если это имеет значение, то библиотеки CUDA находятся в .bashrc
export PATH="/usr/local/cuda/bin:$PATH"export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
ошибка при загрузке общих библиотек: libcudart.so.5.0
Эта ошибка не имеет ничего общего с GDB: ваш исполняемый файл при запуске изнутри GDB не может найти нужную ему библиотеку.
export LD_LIBRARY_PATH = «$ LD_LIBRARY_PATH: / usr / local / cuda / lib64»
GDB запускает вашу программу в новом $SHELL
, так что должно было сработать. Интересно, есть ли взаимодействие с Emacs?
В любом случае это:
(gdb) set env LD_LIBRARY_PATH /usr/local/cuda/lib64
(gdb) run
должен решить эту проблему.
Обновить:
как я упоминал ранее, ld path установлен правильно
Нет это не. Если бы это было, у вас не было бы проблемы.
Теперь я не знаю Зачем это не установлено должным образом. Если вы действительно хотите это выяснить, начните с запуска GDB вне emacs (чтобы исключить возможные взаимодействия с emacs).
Если проблема все еще присутствует, GDB show env
, shell env
, добавив echo "Here"
на ваш ~/.basrc
и т. д. должны помочь вам найти, где вещи не работают, как вы ожидаете их.
У меня тоже была эта проблема. Один из способов взглянуть на это состоит в том, что даже если переменная LD_LIBRARY_PATH верна, когда вы вводите show env
в GDB, это может быть не правильно, когда вы фактически выполняете программу, потому что GDB выполняет $SHELL -c <program>
запустить программу. Попробуйте это как тест, запустите $SHELL
из командной строки, а затем echo $LD_LIBRARY_PATH
, Это правильно? Если нет, то вам, вероятно, нужно добавить его в свой rc (.tcshrc в моем случае).
У меня была похожая проблема при попытке запустить GDB на Windows 7. Я использую MobaXterm для доступа к панели инструментов Linux. Я установил GDB отдельно от http://www.gnu.org/software/gdb/ . Я заставил его работать, убедившись, что GDB может найти правильные файлы .dll, как указано в Employed Russian. Если у вас установлен MobaXterm, файлы .dll должны появиться в вашем домашнем каталоге в MobaXterm / slash / bin.
GDB, однако, не признал LD_LIBRARY_PATH
переменная. Для меня это сработало, когда я вместо этого использовал переменную PATH:
(gdb) set env PATH C:\Users\Joshua\Documents\MobaXterm\slash\bin
(gdb) run
Я бы подумал используя PATH
вместо LD_LIBRARY_PATH
может работать для вас, если вы указали правильный путь к вашей библиотеке.
GDB ищет библиотеку, так почему вы беспокоитесь о пути включения? Возможно, вы захотите установить опцию gdb «solib-search-path», чтобы она указывала на местоположение библиотеки libcudart.so.5.0.