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