- 追加された行はこの色です。
- 削除された行はこの色です。
[[FrontPage]] > [[Linux]] > [[embedded>Linux/embedded]] > [[binutils>Linux/embedded/binutils]]
binutils の概略.
*ld [#z4577add]
リンカ.
OS 上で動作するプログラムを作成する時は,普通は gcc 経由で呼び出すので,明示的に ld を使う機会はほとんど無い.
OS 上で動作するプログラムを作成する時は普通は gcc 経由で呼び出すので,明示的に ld を使う機会はほとんど無い.
が,スタンドアロンで動作するプログラムの場合は,明示的に呼び出す必要がある.
オブジェクトのアドレス配置などは'''リンカスクリプト'''で指定する.
簡易な配置はコマンドラインオプションでも指定可能.
*objcopy [#r185ebaa]
オブジェクトの形式変換.
例えば,linux カーネルをコンパイルして作成される vmlinux ファイル.
これは elf 形式のため,このままメモリ上に配置しても実行することはできない.
これをバイナリイメージ(というか,メモリ上に展開されるイメージ)に変換することができる.
あと,「形式」としてモトローラの S-redord もサポートしている.
EPROM ライタを使用する時は便利かも.
*objdump [#h2456cde]
ディスアセンブラ(だけ,というわけでもないのだけど).
-d オプションでディスアセンブルを行う.
まずは,-d オプション.
ディスアセンブルを行う.
elf 形式など,領域情報(プログラムコード・データの区別)が内包されているファイルの場合,そこらへんはよろしく取り計らってくれる.
が,前述の objcopy などでバイナリ形式に変換された場合,諸々の情報が落ちてしまっている.
このような時は,-D オプションを使用する.
ただし,プログラムコード・やデータの情報は落ちてしまっているので,データ領域もコードとしてディスアセンブルされてしまう.
ここらは古き良き時代(?)のディスアセンブラ同様である.
gcc で -g フラグを付けてデバッグ情報付きでコンパイルされたファイルは,-S オプションでディスアセンブル.
gcc で -g フラグを付けてデバッグ情報付きでコンパイルされたファイルは,-S オプションも使用可能である.
C のソースとアセンブラのニーモニックが霜降りで表示される.
*strip [#p4c1fe51]
OS 上の実行オブジェクトから,ローカルシンボル・デバッグ情報などの実行時に不要な情報を削除する.
ファイルシステムのフットプリント削減には有効.
シェアードライブラリ (*.so) にも適用可能であるが,不具合が出るという説もある.
linux のカーネルモジュールに適用すると,読み込みできなくなるので注意.
*nm [#f47be580]
実行オブジェクトのシンボルとアドレスの一覧を出力する.