2013-02-24 13 views
9

私はCUDAプログラムをデバッグしようとしているが、私はそうのようなgdbを起動していたとき: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 

(私はMxgdbを使用してgdbを実行しています)その場合は、CUDAライブラリは.bashrc

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

CUDAプログラムをデバッグする場合は、 'gdb'または' cuda-gdb'を実行しますか? –

+0

私はそれがcudartライブラリの現在の問題の原因ではないと思っていますが、道のりでデバイスコードをデバッグしたい場合は、代わりに 'cuda-gdb'を使うべきです。 –

答えて

15

エラー共有ライブラリをロード中:GDB内部から実行すると、実行可能ファイル、それが必要とするライブラリを見つけることができません。libcudart.so.5.0

このエラーは、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のパスはありません、それない適切

設定されています。そうだったら、問題はないでしょう。

なぜ、が正しく設定されていないかわかりません。本当に見つかったければ、emacsの外でGDBを実行することから始めます(可能なemacsのやりとりを除外するため)。など

問題がまだ存在する場合は、GDB show envshell env、あなたの~/.basrcecho "Here"を追加し、あなたがそれらを期待するようなものが働いていない場所を見つけるのに役立つはずです。

+0

'export'トリックはOS Xでも' DYLD_LIBRARY_PATH'で動作します。 'set env'はOS Xでは動作しませんでした。 – jww

1

gdbはライブラリを探していますが、なぜインクルードパスに関係していますか? libcudart.so.5.0ライブラリの場所を指すようにgdbオプション "solib-search-path"を設定するとよいでしょう。

+0

ちょうど明白な過去を取得する。あなたが望むライブラリがそのディレクトリにあることは確かですか?あなたは64ビットアプリケーションを構築していると確信していますか?権限が正しく設定されていますか? GDBを使用しないときにこれを実行できると思いますか? – anoneironaut

1

私もこの問題を抱えていました。 gdbにshow envを入力したときにLD_LIBRARY_PATH変数が正しい場合でも、gdbは$SHELL -c <program>を実行してプログラムを実行するため、実際にプログラムを実行すると正しくない可能性があります。これをテストとして試して、コマンドラインから$SHELLを実行してからecho $LD_LIBRARY_PATHを実行してください。それが正しいか?もしそうでなければ、おそらくそれをrc(私の場合は.tcshrc)に追加する必要があります。

2

私はWindows 7でgdbを実行しようとしたときに同様の問題がありました.MobaXtermを使ってLinuxツールボックスにアクセスしました。 http://www.gnu.org/software/gdb/とは別にgdbをインストールしました。私はgdbが雇用ロシア語で言及された正しい.dllファイルを見つけることができることを確認することによって動作させました。 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を使用すると、あなたはあなたのライブラリへの正しいパスを入れて提供するために働くかもしれないと思うだろう。

+0

PATH変数が私のために働いていて、LD_LIBRARY_PATHは感謝しませんでした。 –

関連する問題