回答
在最好的情況下,您的程序已經編譯爲正確的架構/目標。這意味着您在編譯時已經知道該程序是否正在爲32位或64位目標進行編譯。您可以通過使用cfg()
attribute或cfg!()
macro檢查:
fn is_compiled_for_64_bit() -> bool {
cfg!(target_pointer_width = "64")
}
#[cfg(target_pointer_width = "32")]
fn foo() {
println!("foo compiled for 32 bit");
}
#[cfg(target_pointer_width = "64")]
fn foo() {
println!("foo compiled for 64 bit");
}
但要出貨僅32位二進制文件到您的用戶的情況下,通過用戶的32位硬件,然後執行是本地化程序或由用戶的64位硬件兼容模式。要找到我們的程序實際上是在32位體系結構上運行還是僅在32位兼容性模式下運行更加困難,這取決於您的操作系統。我不知道有任何簡單的跨平臺方法可以做到這一點。我建議你爲每個你想要的架構分別編譯。
問題是詢問操作系統是64位還是32位。不是應用程序。 – mason
@mason該部分是由段落解決的「要找到我們的程序是否實際運行在32位體系結構上,或者只是在32位兼容模式下運行...」 – Shepmaster
您可以使用此:
#[cfg(target_os="your operating system here")]
// code here
這真的只是檢查是否操作系統的程序編制上是推薦一個。然後,我想你可以做到這一點,檢查操作系統的位:
#[cfg(all(unix, target_pointer_width = "32"))]
// code here
如果是UNIX操作系統(只是一個佔位符,應支持Windows等),以及32操作系統位數。
[Lukas Kalbertodt的答案](https:// stackoverflow。 com/a/44655636/155423)已經說過這個答案的作用;也許你可以清楚這個新答案帶來了什麼?這也具有相同的限制 - 在兼容環境中運行時不會報告64位。 – Shepmaster
@Shepmaster對不起!我沒有完全讀懂它! – lolman
@Shepmaster,在哪裏可以找到「target_os」和類似參數的有效值列表?謝謝。 –
- 1. 有沒有辦法檢查進程是64位還是32位?
- 2. 無論系統是32位還是64位,int都是32位還是64位?
- 3. 檢查應用程序是建立在32位還是64位?
- 4. 是否有API知道當前的iOS/Mac是64位操作系統還是32位操作系統?
- 5. 無論系統是32位還是64位,uint均爲32位?
- 6. 32位應用程序的64位操作系統
- 7. 如何檢測Cocoa應用程序是32位還是64位?
- 8. 64位操作系統上的32位或64位應用程序?
- 9. 64位Java應用程序:是64位操作系統,64位JRE和64位應用程序嗎?
- 10. 如何確定我的操作系統是32位還是64位?
- 11. 32位/ 64位操作系統?
- 12. 如何確定操作系統在Go中是32位還是64位?
- 13. 32位操作系統VC++應用程序遷移到64位操作系統VC++應用程序
- 14. 什麼數據類型是32位操作系統中的16位和64位操作系統中的32位?
- 15. 檢查正在運行的進程是32位還是64位
- 16. Environment.GetEnvironmentVariable檢查操作系統版本32位/ 64位
- 17. 如何判斷應用程序是64位還是32位?
- 18. 在64位操作系統上編寫程序時,程序是否會運行在32位操作系統上?
- 19. 確定從32位操作系統或64位操作系統C/C++應用
- 20. 64位操作系統與32位MS辦公室問題
- 21. Windows 64位操作系統上的32位或64位Android SDK?
- 22. 64位操作系統上的32位Java:JVM的數量是否有限制?
- 23. 32位應用程序在64位操作系統上運行得更快還是更慢?
- 24. 有沒有一種標準的方法來確定在編譯時系統是32位還是64位?
- 25. JNA在64位操作系統上具有32位JVM
- 26. 64位應用程序的32位操作系統的文件夾
- 27. 如何檢測Flex中的32位或64位操作系統?
- 28. 如何檢查我的Perl安裝是32位還是64位?
- 29. 如何檢查安裝的wxPython是32位還是64位?
- 30. 如何檢查安裝的Anaconda是32位還是64位?
基本上是一個副本[如何找到機器是32位還是64位](https://stackoverflow.com/questions/2401756/how-to-find-if-the-machine-is-32bit-or- 64位)。 – Shepmaster
@Shepmaster這個問題是關於[tag:c],而這個問題是關於[tag:rust]。 – tversteeg
那麼?這個問題與Rust無關。根據定義,它是在詢問如何向操作系統查詢信息,這既不是Rust語言,也不是Rust的標準庫。 – Shepmaster