質問

いリストの記号を輸出しているから。うファイルとは何ですか?できれば、たいものを知られたくなかったからソース(例えばなっからの静的ライブラリ).

を使用していgcc4.0.2ばれました

役に立ちましたか?

解決

標準ツール上場のシンボルは nm, で無い場合、お名前をお書き添えばこのように:

nm -g yourLib.so

を確認したい場合には記号のC++図書館、"-C"オプションdemangleの記号(分で読みやすくするためにdemangled).

nm -gC yourLib.so

場合おります。うファイルはエルフ形式のは、二つのオプション:

のいずれか objdump (-C も便利ですdemangling C++のみ):

$ objdump -TC libz.so

libz.so:     file format elf64-x86-64

DYNAMIC SYMBOL TABLE:
0000000000002010 l    d  .init  0000000000000000              .init
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 free
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 __errno_location
0000000000000000  w   D  *UND*  0000000000000000              _ITM_deregisterTMCloneTable

または使用 readelf:

$ readelf -Ws libz.so
Symbol table '.dynsym' contains 112 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 0000000000002010     0 SECTION LOCAL  DEFAULT   10
     2: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND free@GLIBC_2.2.5 (14)
     3: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __errno_location@GLIBC_2.2.5 (14)
     4: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTable

他のヒント

の場合 .so ファイルはelf形式を使用できreadelfプログラムに抽出すシンボル情報をバイナリー.このコマンドでのシンボルテーブル:

readelf -Ws /usr/lib/libexample.so

だから抽出すべき方で規定されているこ .so ファイルではなく、図書館によって参照されるのです。七つのカラムが含まれる必要があ番号ます。できるエキスを使用することにより簡単な正規表現:

readelf -Ws /usr/lib/libstdc++.so.6 | grep '^\([[:space:]]\+[^[:space:]]\+\)\{6\}[[:space:]]\+[[:digit:]]\+'

または、していることが示唆された Caspin,:

readelf -Ws /usr/lib/libstdc++.so.6 | awk '{print $8}';
objdump -TC /usr/lib/libexample.so

のための共有ライブラリlibNAME.そのスイッチが必要でした見のシンボルマLinux

nm -D libNAME.so

および静的ライブラリとして報告その他

nm -g libNAME.a

り上がったはずなんだろうな -fvisibility=隠し#pragma GCCの視認性 なされているわけではなさそうだしているので、すべてのシンボルが常に見える nm またこの後この問題について意見を交わして readelfobjdump, をしたことのなかった私にとってはあえることで、実際に 二つの シンボルテーブル:

  • にすることもできるのでリスト nm
  • にすることもできるのでリスト readelfobjdump

と思い、旧contains debugging symbolsことができ剥 ストリップ または、-sスイッチすることができ、リンカーの 設置 コマンドです。とてもnmなリストものも、輸出の記号も輸出があるからでELF"ダイナミックシンボルテーブルは、後になります。

加えてみl、nmフラグを取得するためのソースのシンボルです。場合には図書館が作成とデバッグ情報(gcc-g)このソースファイルと行番号です。としてのKonradと、オブジェクトファイル/静的ライブラリであろう未知のことです。

Android .so ファイルは、日本電磁測器株式会ツールチェーンが付属し、必要なツールのその他の回答: readelf, objdumpnm.

C++ .so ファイルの場合、最終 nm コマンド nm --demangle --dynamic --defined-only --extern-only <my.so>

# nm --demangle --dynamic --defined-only --extern-only /usr/lib64/libqpid-proton-cpp.so | grep work | grep add
0000000000049500 T proton::work_queue::add(proton::internal::v03::work)
0000000000049580 T proton::work_queue::add(proton::void_function0&)
000000000002e7b0 W proton::work_queue::impl::add_void(proton::internal::v03::work)
000000000002b1f0 T proton::container::impl::add_work_queue()
000000000002dc50 T proton::container::impl::container_work_queue::add(proton::internal::v03::work)
000000000002db60 T proton::container::impl::connection_work_queue::add(proton::internal::v03::work)

ソース: https://stackoverflow.com/a/43257338

で利用できます nm -g ツールからの助ツールチェーン.しかし、そのソースは必ずしも容易に可能です。見たいな方法が良いと思いますもとこの情報は常に取得されます。か objcopy 明らかにすることができる。

/編集:ツールの名前はもちろん nm.フラグ -g でも使われるようになっていけ輸出にならない。

nm-gのextern変数である必要はな輸出される。非静的ファイルの範囲の変数(C)すべてextern可変となります。

nm-Dのリストのシンボルの動的テーブルまでのアドレスによるdlsym.

nm--version

GNU nm2.17.50.0.6-12.el5 20061020

だいがある場合は記号 現在の 利用できる

objdump -h /path/to/object

またはリストのデバッグ情報

objdump -g /path/to/object
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top