イメージファイルがPE実行可能ファイルであるのはなぜですか?

イメージファイルがPE実行可能ファイルであるのはなぜですか?

私は最新のソースコードlinux-6.0-rc5を使って自分のコンピュータでLinuxカーネルをコンパイルしようとしました。すべてがうまくいっていますが、何か気になることがあります。ImageArch / riscv / bootの下にあるファイルをインポートし、fileコマンドを使用して見てみました。

Image: MS-DOS executable PE32+ executable (EFI application) RISC-V 64-bit (stripped to external PDB), for MS Windows

しかし、私の考えには他のすべての情報を含める必要があるので、それをdata入力する必要があると思います。objcopy -O binary -S

ファイルをfile整理してインポートしましたvmlinux

vmlinux: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), statically linked, BuildID[sha1]=432bf8175b2c7de8404f27f5f395fdb20479f263, with debug_info, not stripped

同じタイプの新しく作成されたCプログラムを再試行すると、実行された操作objcopyを使用してvmlinux正しいdataタイプを取得します。

手動objcopyコンパイルはvmlinuxPE 実行可能ファイルと同じ結果を提供するため、makeシステムに対する追加の変更はできません。

vmlinux取得するために実行されるタスクはImage次のとおりです。

riscv64-linux-gnu-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S vmlinux arch/linux/boot/Image

--just-printオプションがわかるようにmake

objcopy私がその行の意味を間違って理解しているのか、コマンドの結果を誤って理解しているのか疑問に思いますfile

ベストアンサー1

これは、ブートイメージが次の形式のUEFI実行可能ファイルであるためです。ポータブル実行可能ファイル(別名Windows exe)。

おすすめ記事