ライブシステムで定義されている共有ライブラリシンボルの場所を見つける/システムでエクスポートされたすべてのシンボルを一覧表示する
基本的に、これは1つに2つの質問です。なぜなら、システム内でエクスポートされたすべてのシンボルとそれらの共有ライブラリパスを一覧表示できれば、単純にgrepその出力ができるからです。 カーネルシンボルの場合cat /proc/kallsyms、メモリにロードされたモジュールのすべてのシンボルのリストをいつでも取得できるため、多少簡単だと思います。次にsudo cat /proc/modules、ロードされたモジュールとそのアドレスのリストが表示されますが、モジュールがロードされたパスは表示されません(別のツリー外の.koオブジェクトとしてビルドされている場合) たとえば、次をkst使用してプログラムをトレースしようとしますltrace。 $ ltrace kst2 ... _ZNK13QGraphicsItem10parentItemEv(0xa1ccdb4, 0, 0xbfe631a8, 0x823652b, 0xbfe63298) = 0xa1ce854 __dynamic_cast(0xa1ce854, 0x839ff00, 0x8306b80, 84, 0xbfe63298) = 0xa1ce800 _ZNK13QGraphicsItem10parentItemEv(0xa1ccdb4, 0x839ff00, 0x8306b80, 84, 0xbfe63298) = 0xa1ce854 __dynamic_cast(0xa1ce854, 0x839ff00, 0x8306b80, 84, 0xbfe63298) = 0xa1ce800 ... ...そして、これがどこにあるのか知りたい_ZNK13QGraphicsItem10parentItemEvです。 では、共有ライブラリシンボルについてはどうすればよいでしょうか?[gcc-help]を読むRe:シンボルが定義されているライブラリを見つける。; 私はこのようなものを試しました: $ find /usr/lib -name '*.so*' -exec nm --print-file-name …