使用者在使用 Make 指令之前做了什麼或使用了什麼?

使用者在使用 Make 指令之前做了什麼或使用了什麼?

我使用 Gentoo 作為我的主要家庭桌面作業系統。我從 2004 年開始就有了。我很欣賞這個emerge用於管理基於來源的作業系統的命令。我時不時會查看其他發行版,但我特別喜歡Linux From Scratch - 對於那些不知道的人。誠然,我從未讀完整本書,因為使用 Gentoo 在這方面已經把我寵壞了。我認為 Gentoo 是 LFS + 套件管理器。我最終決定要完成這本書,所以我將 XUbuntu 粘在虛擬機上來模擬新鮮感...


我正在追蹤候選版本版本 3 - CLFS 的 Systemd,它擊中了我第6章-臨時系統-製作如果使用者需要make編譯一個版本的Make,先有雞還是先有蛋的因果關係問題出現 這引出了我的下一個邏輯問題。

  1. 什麼時候史都華·費爾德曼創建make於 1976 年,如果計算公眾的作業系統不包含作業系統依賴項,他們如何編譯他的程式make?我是否可以假設下面的維基百科文章對於每個作業系統都是正確的?

  2. 他是否必須打包 make 以包含 make 的每個作業系統相關版本才能完成 1?(見下文)

  3. 如果我需要程式A,但它只能在作業系統A上編譯,即使我使用作業系統B,我是否也必須購買作業系統A? (如果可能,請忽略此處的 Windows。)

更新

  1. 根據 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 腳本,並指示他們執行該腳本。

相關內容