History

在 Linux 上如何處理向 64 位的轉變

  • October 30, 2013

在 Linux/Unix 上如何過渡到 64 位?Windows 世界似乎仍然存在問題,我很好奇它在 *nix 世界中是如何處理的。

使核心成為 64 位所需的工作是在很久以前使用 DEC Alpha 系統完成的。然而,程序是另一回事。

到目前為止,我所看到的普遍共識似乎是:

  • 具有混合二進製文件的系統的單獨/lib和目錄/lib64
  • 編譯為 64 位;如果編譯失敗,則重新編譯為 32 位,直到可以將原始碼清除為 64 位。

除此之外,你真的不會從混合 32/64 位建構中看到很多“悲傷”。

Windows 和 *ix 使用不同的數據模型進行轉換。這個 UNIX.org頁面有點舊,但它仍然很好地概述了權衡(注意long long後來添加到 C99,並且要求至少為 64 位)。您還可以查看有關同一主題的Wikipedia 文章。正如 UNIX.org 文章末尾所提倡的,大多數類 UNIX 系統都採用 LP64,這意味著longlong long和指針都是 64 位的。

Windows 採用了所謂的 LLP64 數據模型,這意味著只有long long和 指針是 64 位的。 long仍然是 32 位。部分原因很簡單,他們不想檢查並修復假定long適合int.

引用自:https://unix.stackexchange.com/questions/190