Tweet


[[FrontPage]] > [[Linux]] > [[embedded>Linux/embedded]] > [[binutils>Linux/embedded/binutils]]

binutils の概略.

*ld [#z4577add]
リンカ.

OS 上で動作するプログラムを作成する時は,普通は gcc 経由で呼び出すので,明示的に ld を使う機会はほとんど無い.

が,スタンドアロンで動作するプログラムの場合は,明示的に呼び出す必要がある.

オブジェクトのアドレス配置などは'''リンカスクリプト'''で指定する.
簡易な配置はコマンドラインオプションでも指定可能.

*objcopy [#r185ebaa]
オブジェクトの形式変換.

例えば,linux カーネルをコンパイルして作成される vmlinux ファイル.
これは elf 形式のため,このままメモリ上に配置しても実行することはできない.
これをバイナリイメージ(というか,メモリ上に展開されるイメージ)に変換することができる.

*objdump [#h2456cde]
ディスアセンブラ(だけ,というわけでもないのだけど).

-d オプションでディスアセンブルを行う.
elf 形式など,領域情報(プログラムコード・データの区別)が内包されているファイルの場合,そこらへんはよろしく取り計らってくれる.

が,前述の objcopy などでバイナリ形式に変換された場合,諸々の情報が落ちてしまっている.
このような時は,-D オプションを使用する.
ただし,プログラムコード・やデータの情報は落ちてしまっているので,データ領域もコードとしてディスアセンブルされてしまう.
ここらは古き良き時代(?)のディスアセンブラ同様である.

gcc で -g フラグを付けてデバッグ情報付きでコンパイルされたファイルは,-S オプションでディスアセンブル.
C のソースとアセンブラのニーモニックが霜降りで表示される.


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS