16

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

4 に答える 4

25

共有ライブラリの読み込み中にエラーが発生しました: libcudart.so.5.0

このエラーは GDB とは関係ありません。実行可能ファイルを GDB 内から実行すると、必要なライブラリが見つかりません。

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

GDB はプログラムを new$SHELLで実行するので、うまくいくはずです。emacsとのやり取りはあるのかな。

いずれにせよ、これは:

(gdb) set env LD_LIBRARY_PATH /usr/local/cuda/lib64
(gdb) run

この問題を修正する必要があります。

更新

前に述べたように、ld パスは適切に設定されています

いいえ、そうではありません。もしそうなら、あなたは問題を抱えていないでしょう。

さて、なぜそれが適切に設定されていないのかわかりません。本当に知りたい場合は、emacs の外部で GDB を実行することから始めます (emacs の相互作用の可能性を排除するため)。

問題が解決しない場合は、 gdb show env、などshell envを に追加echo "Here"すると~/.basrc、期待どおりに動作していない場所を見つけるのに役立ちます。

于 2013-02-24T16:48:35.843 に答える
1

gdb はライブラリを探しているのに、インクルード パスを気にするのはなぜですか? libcudart.so.5.0 ライブラリの場所を指すように gdb オプション「solib-search-path」を設定してみてください。

于 2013-02-24T06:59:27.633 に答える