Как загрузить дополнительные библиотеки для GDB?

Я пытаюсь отладить программу 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"

11

Решение

ошибка при загрузке общих библиотек: 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и т. д. должны помочь вам найти, где вещи не работают, как вы ожидаете их.

18

Другие решения

У меня тоже была эта проблема. Один из способов взглянуть на это состоит в том, что даже если переменная LD_LIBRARY_PATH верна, когда вы вводите show env в GDB, это может быть не правильно, когда вы фактически выполняете программу, потому что GDB выполняет $SHELL -c <program> запустить программу. Попробуйте это как тест, запустите $SHELL из командной строки, а затем echo $LD_LIBRARY_PATH, Это правильно? Если нет, то вам, вероятно, нужно добавить его в свой rc (.tcshrc в моем случае).

2

У меня была похожая проблема при попытке запустить 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 может работать для вас, если вы указали правильный путь к вашей библиотеке.

2

GDB ищет библиотеку, так почему вы беспокоитесь о пути включения? Возможно, вы захотите установить опцию gdb «solib-search-path», чтобы она указывала на местоположение библиотеки libcudart.so.5.0.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector