2012-03-05 18 views
1

私はlt_dlopenを呼び出し、一般的なファイルが見つかりませんでしたエラー(翻訳されたerrnoテキスト)を取得しています。ファイルが確実に存在するため、実際に何が失敗しているのかについて、どのようにすればより多くの情報を得ることができますか?lt_dlopenが失敗した場合の詳細情報の入手方法

これはC++ライブラリをロードするC++プログラムです。他の場所では同じプログラムで問題なく他のライブラリを開くために同じコマンドを使用するので、このライブラリに固有のものかもしれません。私はlddを使用しており、ライブラリのこれらの依存関係はすべて満たされています。 http://www.delorie.com/gnu/docs/libtool/libtool_46.htmlから

+0

あなたのプログラムを 'strace'することができます... –

+0

' strace'は問題を示唆するものを何も表示しません。 –

+0

'ltrace'を使うこともできます。 'lt_dlopen'が' * .so'ファイルの完全な絶対パスを渡されたことを確信していますか? –

答えて

3

私はその作品の種類何かに出くわし:その後、

export LD_DEBUG=all 

と出力の極端な質量throught取捨選択に進みます。この場合、「検索エラー」が見つかり、シンボルの1つを解決できませんでした。理由は分かりませんが、おそらくこの質問には関係しません。

-1

Function: lt_dlhandle lt_dlopen (const char *filename)

[...]は、lt_dlopenが何らかの理由で失敗した場合、それはNULLを返します。

Function: const char * lt_dlerror (void)

戻り はlibltdlのあらゆる関数から発生したことを最新のエラーを説明する人間が読める文字列。 が初期化からまたは最後に呼び出されてからエラーが発生していない場合はNULLを返します。

+1

そのメッセージも「ファイルが見つかりません」 –

+0

これからもっと多くのものが出てくることを期待していましたが、提供する情報がまばらなので、私は推測できました。それはうまくいかなかった... – CygnusX1

0

libtoolを$ CFLAGSの "-DLT_DEBUG_LOADERS"で再コンパイルします。 LD_LIBRARY_PATHを調整して、プログラムがシステムの代わりにこのデバッグlibltdl.soを見つけるようにします。そのデバッグバージョンのltdlは、ローダーがLD_DEBUG = allよりも冗長性の低いターゲットをオープンしようとすると、明示的なエラーを出力します。

関連する問題