Как загрузить дополнительные библиотеки для 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 с помощью M-xgdb) Если это имеет значение, то библиотеки CUDA находятся в .bashrc

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

4 ответов


ошибка при загрузке общих библиотек: libcudart.так что ... .5.0

эта ошибка не имеет ничего общего с GDB: ваш исполняемый файл, при запуске из GDB, не может найти нужную библиотеку.

экспорт 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 установлен правильно

нет,не. Если бы это было так, у тебя не было бы проблем.

теперь я не знаю почему это не правильно. Если вы действительно хотите узнать, начните с запуска GDB вне emacs (чтобы исключить возможные взаимодействия emacs).

если проблема все еще присутствует, ГДБ show env, shell env добавление echo "Here" на ~/.basrc, etc. должно помочь вам найти, где все работает не так, как вы ожидаете.


у меня была аналогичная проблема при попытке запустить gdb в windows 7. Я использую MobaXterm для доступа к панели инструментов Linux. Я установил gdb отдельно отhttp://www.gnu.org/software/gdb/ . Я заставил его работать, убедившись, что gdb может найти правильный .dll-файлы, как упоминалось занятым русским языком. Если у Вас установлен MobaXterm .dll-файлы должны отображаться в вашем домашнем каталоге в MobaXterm/slash/bin.

ГДБ не признает 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.Итак.5.0 библиотека.


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