如何检查已编译的二进制文件是32位还是64位?

时间:2011-09-19 13:31:50

标签: macos

我有一台运行Lion的Mac,我刚刚下载了最新版本的apache。 我做了平常的事情:

$./configure --prefix=/Users/daniels/Sandbox
$ make
$ make install

httpd二进制编译的架构是什么? x86还是x64?有没有办法找到这个?

我正在寻找的是我想制作一个类似MAMP的应用程序,我想以这样的方式编译Apache,PHP和MySQL,我可以把它们放在DMG文件中,然后把它交给其他人和他们可以运行它。

3 个答案:

答案 0 :(得分:18)

查看file命令。

$ file /usr/bin/grep
/usr/bin/grep: Mach-O universal binary with 2 architectures
/usr/bin/grep (for architecture x86_64):    Mach-O 64-bit executable x86_64
/usr/bin/grep (for architecture i386):  Mach-O executable i386

答案 1 :(得分:1)

lipo二进制文件也可以执行此操作。

lipo -archs

$ lipo -archs 'Adobe Photoshop Lightroom 5'
x86_64 

lipo -info

$ lipo -info 'Adobe Photoshop Lightroom 5'
Non-fat file: Adobe Photoshop Lightroom 5 is architecture: x86_64

答案 2 :(得分:0)

确定Apache是​​32位还是64位的简单方法是使用dtrace在全局区域中执行以下命令:

sudo dtrace -qn 'syscall::: /execname == "httpd"/ { ab = (curpsinfo->pr_dmodel == PR_MODEL_ILP32) ? "32-bit" : "64-bit" ; exit(0); } END { printf("Apache: %s",ab); }'