0

只是關於編譯內核的一個小澄清(不是我正在做的任何:P)。 我對編譯的瞭解是它是特定於計算機的,儘管您可以使用交叉編譯器來編譯您的工作以在不同的機器上運行(或編譯爲在虛擬機下運行的字節碼),但是交叉編譯需要一些基礎知識/運行您編譯的程序所需的必要條件(如C++/C庫或Java VM ...)。內核編譯 - 跨平臺

但是內核呢?他們編譯它們一次,並在每臺*機器上奇蹟般地運行(*沒有檢查),我搜索了網絡,並找到了一些關於如何交叉編譯內核的指南,但沒有說明它爲什麼或如何工作!具有不同指令集的不同CPU如何成功運行相同的二進制文件?

如果你有一些裁判回答我的問題,我會爲此非常感激,也許事情讓我開始學習更多關於內核將以精湛的:d

回答

0

他們不知道。爲例如ARM v6編譯的內核不能在任何其他類型的CPU上運行。每個二進制文件都是一樣的,內核並不是魔術。而交叉編譯僅意味着生成的二進制文件特定於與編譯器運行的體系結構不同的體系結構。例如,在我的x86桌面上,我可以編譯將在x86上運行的二進制文件,或者我可以交叉編譯將運行的二進制文件,例如PowerPC。但兩者都不會在對方的目標平臺上運行。

+0

所以當我安裝linux時,它會檢測我的arch併爲我的系統安裝適當的內核? –

+0

取決於安裝程序/發行版。我使用的發行版沒有這樣做,你必須自己選擇正確的安裝程序。 – delnan