给定两个来自cl.exe
PE对象文件,一个32位和一个64位,我怎么能告诉另一个没有诉诸Unix工具,最好在命令行(cmd.exe或powershell)?
C:\> "...\VC\bin\cl.exe" -c test.c -Fotest32.obj C:\> "...\VC\bin\x86_amd64\cl.exe" -c test.c -Fotest64.obj
如果我安装msys2 file
实用程序可以sorting有意义的:
$ file test*.obj test32.obj: Intel 80386 COFF object file, not stripped, 3 sections, [...] test64.obj: data
file --version
是5.28,但更新的5.25没有更好的。 msys2不提供objdump.exe
,但是当复制到Linux时,它可以正确分辨这两个文件:
$ objdump -a test64.obj test64.obj: file format pe-x86-64 $ objdump -a test32.obj test32.obj: file format pe-i386
一些比file
更好的东西可以通过msys2的pacman获得,这也许是有趣的。
最直接的方法是使用Microsoft的DUMPBIN工具,传递/ HEADERS选项,例如
dumpbin /HEADERS cl.exe | findstr "machine"
这会为64位图像生成以下输出
8664 machine (x64)
或以下为32位图像
14C machine (x86) 32 bit word machine