ある日、Windows上で、実行ファイルがARMプロセッサ用のもの (ARM64) なのか、Intelプロセッサ用のもの (x64) なのかを調べる必要に迫られた。
macOSやLinuxならfile
コマンドで簡単に調べられる。
macOSでhelloコマンドがどのプロセッサアーキテクチャ用か調べる例:
% file hello
hello: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
hello (for architecture x86_64): Mach-O 64-bit executable x86_64
hello (for architecture arm64): Mach-O 64-bit executable arm64
Linuxでhelloコマンドがどのプロセッサアーキテクチャ用か調べる例:
$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=hQzJMwMxb02f49rQ6g6B/3BF_ZZ5BPtbixKbreFsE/u3vXoCvI_vufilYlKBOW/6afpPIRP4FC4Tq7Lltoj, with debug_info, not stripped
標準的な状態のWindowsにはfile
コマンドなんぞ無い。
Windows実行ファイル (.exe) が、どのアーキテクチャ用かを知るにはどうすればいいのじゃ?