Multiarch
Multilib 和 Multiarch
**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。