我如何检查编译的二进制文件是32位还是64位?
问题描述:
我有一台运行Lion的Mac,我刚刚下载了最新版本的Apache。 我做了平常的事情:我如何检查编译的二进制文件是32位还是64位?
$./configure --prefix=/Users/daniels/Sandbox
$ make
$ make install
为了什么架构httpd二进制文件编译的? 32或64?有没有办法找到这个? 我正在寻找的是我想做一个MAMP像应用程序,我想编译 Apache,PHP,MySQL这样,我可以把它们放在一个dmg文件,然后把它给其他人,他们可以运行。
答
查看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
答
一种简单的方法,以确定是否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); }'
可能重复的[确定是否可执行(或库)是32或64位(在OSX上)](http://stackoverflow.com/questions/1941825/determine-if-an-executable-or-library-is-32-or-64-bits -on-OSX) – outis