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

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

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

答案1

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

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

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

除此之外,您真的不會看到混合 32/64 位元建置帶來的大量「悲傷」。

答案2

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

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

答案3

由於 Linux 發行版大多是開源的,因此已經完成了很大的轉換。除非您使用專有軟體(例如Skype),否則您可以運行純64位元系統,沒有任何缺點。

然而,恕我直言,真正的區別是更專有與開放,然後是unix與windows,因為它通常是首先移植的開源軟體(一些志願者需要重新編譯某些東西- 也許修復一些編譯問題) - 或者在大多數情況下不移植一切都只是重新編譯;) - 以及最後移植的財產。

另外,在 Linux 上,您可能還有儲存庫,因此安裝會自動處理 - 您無需選擇 64 位元或 32 位元版本(系統會自動選擇您的版本)。在 Windows 上下載程式並具有單獨的 64 位元和 32 位元版本:

  • 將伺服器上的檔案大小加倍
  • 要求使用者知道他/她的版本。或者甚至他們在某些方面有所不同

我想這就是 Windows 二進位檔案通常為 32 位元的原因 - 它是一刀切的,並不是每個人都使用 64 位元版本。

答案4

實際上,請嘗試 ACM Queue 上的“The Long Road to 64-bits”: http://queue.acm.org/detail.cfm?id=1165766 後來 ACM 通訊部發現了這個消息。第一款 64 位元微處理器是 MIPS R4000,在 SGI Crimson 1Q1992 出貨,Dec Alphas 同年稍後出貨。

R4000 最初以 32 位元模式運行,後來以 64/32 模式運行,即 64 位元作業系統、64 或 32 位元用戶代碼。 Alphas 始終僅以 64 位元運行 UNIX(這是一個合理的選擇,因為沒有 32 位元應用程式的安裝基礎。)

20 世紀 90 年代後期,SGI 為 64 位元 Linux(在 Itanium 上運行)做出了貢獻,大約在 XFS 移植到 Linux 的時候(它確實需要 64 位元)。

相關內容