我使用 Gentoo 作為我的主要家庭桌面作業系統。我從 2004 年開始就有了。我很欣賞這個emerge
用於管理基於來源的作業系統的命令。我時不時會查看其他發行版,但我特別喜歡Linux From Scratch - 對於那些不知道的人。誠然,我從未讀完整本書,因為使用 Gentoo 在這方面已經把我寵壞了。我認為 Gentoo 是 LFS + 套件管理器。我最終決定要完成這本書,所以我將 XUbuntu 粘在虛擬機上來模擬新鮮感...
我正在追蹤候選版本版本 3 - CLFS 的 Systemd,它擊中了我第6章-臨時系統-製作。 如果使用者需要make
編譯一個版本的Make,先有雞還是先有蛋的因果關係問題出現 這引出了我的下一個邏輯問題。
什麼時候史都華·費爾德曼創建
make
於 1976 年,如果計算公眾的作業系統不包含作業系統依賴項,他們如何編譯他的程式make
?我是否可以假設下面的維基百科文章對於每個作業系統都是正確的?他是否必須打包 make 以包含 make 的每個作業系統相關版本才能完成 1?(見下文)
如果我需要程式A,但它只能在作業系統A上編譯,即使我使用作業系統B,我是否也必須購買作業系統A? (如果可能,請忽略此處的 Windows。)
更新
- 根據 jimmij 的評論,特定於作業系統的編譯器是否以與作業系統相關的 make 相同的方式存在?
維基百科說:
在 Make 引入之前,Unix 建置系統通常由作業系統相關的「make」和「install」shell 腳本及其程式原始碼組成。能夠將不同目標的命令組合到一個檔案中,並且能夠抽像出依賴性追蹤和歸檔處理,是現代建構環境方向的重要一步。
另外,請注意,我在這裡尋找一些歷史觀點,因為我出生於 1976 年。
答案1
make只是為了方便。沒有它你也可以建立軟體,只是更加困難。
當您運行make
建置某些東西時,它會向您顯示它正在運行的命令。您可以手動執行這些命令並獲得相同的效果。
$ echo "int main() {}" > test.c
$ make test
cc test.c -o test
其中建立了一個名為test
.
我只需執行以下操作即可得到相同的結果:
cc test.c -o test
如果 make 不存在,您可以指示使用者手動執行此cc
命令,也可以分發 shell 腳本,並指示他們執行該腳本。