Как я могу проверить, является ли скомпилированный двоичный файл 32-битным или 64-битным?

У меня Mac работает Lion, и я просто скачал последнюю версию apache. Я сделал обычные вещи:

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

Для какой архитектуры скомпилирован двоичный файл httpd? 32 или 64? Есть ли способ найти это? Я ищу, что я хочу сделать приложение MAMP, и я хочу скомпилировать Apache, PHP, MySQL таким образом, чтобы я мог поместить их в файл dmg, а затем передать его другим людям, и они могут запускать его.

Ответ 1

Проверьте команду 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

Ответ 2

Легкий способ определить, является ли 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); }'