Multiarch

Multilib 和 Multiarch

  • July 24, 2018

**Multilib 和 Multiarch:**這兩個術語只是同義詞嗎?如果不是,它們有何不同?

如果我想在同一個系統中執行 32 位和 64 位應用程序,那麼我應該將其稱為Multiarch 還是 Multilib ?

它們是針對相同一般問題的不同方法,具有不同的範圍:執行為不同架構建構的二進製文件。

當你得到一個二進製文件來執行時,你需要三樣東西:它需要的庫(如果有的話,包括它的動態載入器),對它進行的系統呼叫的支持,以及解釋它包含的機器指令的能力。Multilib 和 multiarch 解決了第一個問題。

Multilib 使用每個架構的已知變體表。這最初解決了 ABI 變體,例如在 MIPS 上,但現在它最常見的用途是 x86 上的 32 位支持:它通常定義lib32為 32 位庫目錄(並且此定義是特定於 x86 的)。因此,multilib 設置可能會/lib/lib32. 在編譯器端,您指定-m32使用 multilib 建構 32 位二進製文件。

Multiarch 更通用:它的定義不依賴於主機架構。所有庫都可以在lib與其目標架構對應的子目錄中找到;/usr/lib/x86_64-linux-gnu/, /usr/lib/i386-linux-gnu, 等等。在編譯器方面,您使用適當的交叉編譯器。

您使用哪種方法來執行 32 位二進製文件取決於發行版。Debian 及其衍生產品現在使用 multiarch,其他發行版使用 multilib。

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