2012-08-14 12 views
5

ダイナミックリンク中に、奇妙な未定義関数参照が現れます。私はこの機能を含むべきライブラリの名前を知っています。関数がライブラリ(.aファイル)に既に存在することを確認するlinuxコマンドはありますか?ライブラリ内の関数が存在するかどうかを確認する

+2

libに 't'または' T'が付いたシンボルが 'nm 'を試してください。 – Rohan

+0

[autoconf](http://www.gnu.org/software/autoconf/)は、['AC_CHECK_LIB'](http://www.gnu.org/software/autoconf/manual)でライブラリの可用性をチェックするときにこれを行います/autoconf.html#Libraries)関数を呼び出します。 –

答えて

9

を探しているあなたの情報の一部を与えるべきnmコマンドを見てください、grepを使用して結果をフィルタリングします。 \d T functionname\(などを探してください。

+0

ライブラリにはTの接頭辞が付いた関数名がありますが、関数名は私が期待するものではありません。 nmは見つける: '0000000000000310 T _Z15lmp_init_deviceiiiiidii' 私はlmp_init_deviceを探しています。 リンク時にプレフィックス/サフィックスが無視されるかどうかを確認します。 – ahmad

+1

'--demangle'を追加すると、追加された文字が削除されるはずです(これはC言語ではなくC言語であるためです)。 – Mario

1

は、ライブラリ内であることのすべてのリストを取得するには(--demangleパラメータが必要な場合があります)あなたはあなたがnmを使用することができるはず

関連する問題