HEX ELF
ファイル変換

HEX から ELF への変換

クイック回答
HEX を ELF に変換することは可能ですか?
はい - HEX は ELF に変換可能です。

avr-objcopy -I ihex -O elf32-avr firmware.hex firmware.elfを実行して、有効なELFファイルを生成します。このELFは正しく逆アセンブルされますが、シンボルテーブルやDWARFデバッグセクションは含まれません。これらは.hexファイルからではなく、コンパイラから生成されるためです。まずビルドディレクトリを確認してください。コンパイラがすでに.hexと並んで.elfを作成している可能性が高いです。

ELF への他の変換: FAP · S19

このページの内容

macOS、Windows、Linux でテスト済み
最終検証日:Oct 2026

その他の無料コンバーター

HEIC、PNG、WEBP、MP3 など、すべてのツールが無料です。

ツールボックスを開く

なぜ HEX を ELF に変換するのですか?

一部の組み込みツールチェーンやデバッガは、生のHEXではなくELF入力のみを受け付けます。.hexを .elf にラップすることで、シンボルテーブルがなくても、GDBやELF形式を必要とする書き込みユーティリティにファームウェアをロードできるようになります。シンボルとデバッグ情報を含む完全なELFはコンパイラによって生成されます。HEXからの変換では、ストリップされた(情報の削られた)シェルのみが得られます。

HEX から ELF への変換方法

avr-objcopy OPEN-SOURCE

avr-objcopy -I ihex -O elf32-avr firmware.hex firmware.elfを実行します。elf32-avrを正しいターゲット(例:ARM Cortex-Mの場合はelf32-littlearm)に置き換えてください。avr-objcopyはavr-gccに付属しており、Arduino IDE内にも同梱されています。

arm-none-eabi-objcopy OPEN-SOURCE

ARM Cortex-Mターゲットの場合、GNU Arm Embedded Toolchainからarm-none-eabi-objcopy -I ihex -O elf32-littlearm firmware.hex firmware.elfを実行します。

これらの形式について

品質と注意点

  • 出力されるELFには、ターゲットアドレスにある生のバイトのみが含まれます。セクション名は、コンパイラによって割り当てられた元の.text、.data、.bssではなく、汎用的な名前(例:.sec1)になります。
  • ファームウェアを自分でコンパイルした場合は、ビルドディレクトリに.hexと並んで.elfがすでに存在している可能性が高いので、変換前に確認してください。
  • -O elf32-avrアーキテクチャフラグは実際のCPUと一致している必要があります。間違ったフラグを使用すると、デバッガやフラッシャーが拒否するELFが生成されます。

よくある質問

HEXファイルから関数名やデバッグシンボルを復元できますか?
いいえ - Intel HEXには生のバイトとメモリアドレスのみが保存されます。シンボル名、DWARFデバッグ情報、セクション名は存在しません。
自分のマシン上のどこにavr-objcopyがありますか?
avr-gccに付属しており、Arduino IDEのhardware/tools/avr/bin/の下に同梱されています。ARMターゲットの場合はarm-none-eabi-objcopyを使用してください。
生成されたELFは正しく逆アセンブルされますか?
はい - 生のバイトとロードアドレスは損なわれていないため、逆アセンブルは機能しますが、関数名や変数名は欠落します。