我在gcc中編寫了一個程序,該程序具有性能關鍵部分的asm語言,並且我希望在運行時確保程序在正確的體系結構上運行。特別是,我需要區分Linux上的ia64(Itanium)和x86_64。以編程方式檢測處理器類型(Linux)
我只是讀/ proc/cpuinfo?看起來笨重,但我找不到合適的內核調用。
我在gcc中編寫了一個程序,該程序具有性能關鍵部分的asm語言,並且我希望在運行時確保程序在正確的體系結構上運行。特別是,我需要區分Linux上的ia64(Itanium)和x86_64。以編程方式檢測處理器類型(Linux)
我只是讀/ proc/cpuinfo?看起來笨重,但我找不到合適的內核調用。
IA64和x86_64是完全不同的體系結構。一個爲其構建的程序不會在另一個上運行,所以你的問題沒有意義(事實上,與x86指令集不兼容是IA64市場滲透率低的原因之一,因爲基於IA64的系統不能運行各種現有的傳統32位基於x86的應用程序)。
您可以做的最好的方法是編譯兩個不同版本的程序,然後在用戶調用程序時使用包裝腳本來選擇適當的二進制文件。
/proc/cpuinfo
是linux上CPU信息的標準接口。
這是最好的選擇,因爲它打算獨立於架構。
見http://stackoverflow.com/questions/9629850/how-to-get-cpu-info-in-c-on-linux-such-as-number-of-cores樣品碼。 – bleater