Как определить, является ли работающая в настоящее время система Mac OS X 32-битной или 64-битной машиной?
Архитектура системы
Ответы (3)
Это зависит от того, что вы подразумеваете под «64-битной машиной». В целом существует три категории в зависимости от семейства процессоров:
- Поддерживает некоторые 64-битные математические операции.
- Может запускать программы в режиме X-64 (64-битная адресация)
- Имеет поддержку 64-битного ядра
Я предполагаю, что здесь вы имеете в виду значение «2», поскольку оно наиболее актуально для кода приложения. Я думаю, вам не нужно беспокоиться о значении «1», если вам не нужно работать на старых компьютерах PowerPC Mac.
Вы специально упомянули об этом в коде C, что на самом деле не имеет особого смысла. Если вы компилируете код C, вы можете просто собрать свое приложение «толстым» с 32- и 64-битными вариантами и, следовательно, выполнить проверку во время компиляции с помощью:
#if _LP64
//64-bit stuff
#else
//32-bit stuff
#endif
Я совершенно уверен, что sizeof(long) == 4
в 32-битных системах и sizeof(long) == 8
в 64-битных системах. То же самое должно быть верно и для указателей.
немного греппи, но..
#!/bin/sh
ioreg -l -p IODeviceTree | grep EFI64
if [ $? = 0 ]
then
echo "I am a 64bit machine!"
else
echo "I am a 32bit machine!"
fi
завернутый в NSTask *task = [[NSTask alloc] init]; ...
?
ioreg -l -p IODeviceTree | grep EFI64
без остальной части скрипта, я вижу 64-битный результат ("firmware-abi" = <"EFI64">
- person John Rudy; 19.11.2009
ioreg -l -p IODeviceTree | grep firmware-abi | grep -o EFI32
другие/лучшие результаты?
- person miku; 19.11.2009