stripコマンド

binutilsのstripコマンドはシンボル情報を削除するためのコマンドだ。シンボル情報は関数などの名前を記述してあり、hogehogeのアドレスはどこか?といった情報が読み取れる。gdbやld がこれらの情報を使用する。
よく使うオプションは以下のとおり。

  • strip -g デバッグ情報を削除
  • strip -X ローカルシンボル (たいてい"L","."ではじまる)を削除
  • strip -x グローバルでないシンボルを削除(-Xより削除範囲が広い)
  • strip -s すべてのシンボルを削除(既定値)

ライブラリ(.aや.o)は -g以外を指定するとリンクできないことがある。実行形式(.exe)はリンクされることがないので-sを使うことができる。WindowsのDLLがロードされる際はシンボル情報は関係ないので.exeと同じくstrip -sでOK。

シンボル情報の話が出てきたので、objdumpの話を書こうかな。