如何確定當前運行的Mac OS X系統是32位還是64位機器?系統架構
系統架構
回答
我很確定在32位系統上的sizeof(long) == 4
和在64位系統上的sizeof(long) == 8
。指針也應該是這樣。
這可以讓你確定你的應用程序是否編譯爲64位或32位,它不會讓你知道,如果你在64位或32位系統上運行。雖然可以假設指針大小爲8,這意味着系統是64位,如果是4,那麼您可以在64位系統上運行32位二進制。 – 2009-11-18 09:45:33
有點greppy,但..
#!/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]; ...
?
我們確定這個腳本是否有效?在運行10.5.8的Intel Core 2 Duo上,我總是獲得32位的結果。 (鋁製MacBook,1歲)。但是,當我運行'ioreg -l -p IODeviceTree | grep EFI64'沒有腳本的其餘部分,我看到64位結果(''firmware-abi「= <"EFI64">' – 2009-11-19 17:29:32
好吧,我無法在我的機器上測試它,只是在不同的地方閱讀(http ://www.9to5mac.com/snow-leopard-64-bit-32-bit-firmware-efi,http://blog.galensprague.com/?p=200);我昨天聽到很多關於膠水代碼的消息在技術講座,所以我只是張貼它.. 確實: ioreg -l -p IODeviceTree | grep固件-abi | grep -o EFI32'' 產生其他/更好的結果? – miku 2009-11-19 17:36:21
這取決於你的意思是「64位機器」。有大致三類取決於處理器家族:
- 支持一些64位的數學運算
- 可以在X-64模式程序(64位尋址)
- 有64位內核支持
我假設你的意思是「2」,因爲這與應用程序代碼最相關。我相信,除非你需要運行在老式的PowerPC Mac上,否則你不必擔心「1」的感覺。
您特別提到了在C代碼中這樣做,這實際上沒有多大意義。如果你正在編譯的C代碼,你可以建立自己的應用程序「胖」,有32位和64位的變體,因此做檢查在編譯時間:
#if _LP64
//64-bit stuff
#else
//32-bit stuff
#endif
- 1. 檢測系統架構
- 2. Netflix/Hulu系統架構
- 3. 標籤系統的架構
- 4. 集羣系統架構?
- 5. 報告系統架構
- 6. SFML粒子系統架構
- 7. 模塊化系統架構
- 8. 聯繫人管理系統架構
- 9. 開放源代碼雲操作系統/操作系統架構
- 10. 系統架構圖中的「雲架構」概念
- 11. 敏捷架構的系統故事
- 12. VB.NET多線程和系統架構
- 13. 用戶通知系統的架構
- 14. Java中,系統架構,正確實施
- 15. 爲arm架構編寫操作系統
- 16. 如何動態獲取系統架構?
- 17. 如何分析系統架構?
- 18. 爲x86架構開發操作系統
- 19. MongoDB的架構設計郵件系統
- 20. 用於系統架構的Visio模具
- 21. 操作系統架構檢測腳本
- 22. 小型企業的系統架構ISP
- 23. 遊戲照明系統架構
- 24. 在線預訂系統架構?
- 25. OpenLDAP,如何擴展系統架構
- 26. BDB文件是否可以從一個系統架構移植到另一個系統架構
- 27. 分析系統 - 數據庫設計或架構存儲統計
- 28. PHP CMS系統與框架構建 - PHP框架和PHP CMS
- 29. Zend框架 - 基於模塊的系統架構
- 30. 關係計數系統(MongoDB)的架構設置
另外一個重複的,雖然到公平的重複沒有被接受的答案。 http://stackoverflow.com/questions/853798/programmatically-get-processor-details-from-mac-os-x – GManNickG 2009-11-18 08:29:52
什麼編程語言? – Asaph 2009-11-18 08:29:57
哦,是的,我想我不應該假設在重複開心之前。 :X – GManNickG 2009-11-18 08:30:25