我使用 Gentoo 作为我的主要家庭桌面操作系统。我从 2004 年开始就有了。我很欣赏这个emerge
用于管理基于源的操作系统的命令。我时不时地查看其他发行版,但我特别喜欢Linux From Scratch - 对于那些不知道的人。诚然,我从未读完整本书,因为使用 Gentoo 在这方面已经宠坏了我。我认为 Gentoo 是 LFS + 包管理器。我最终决定要完成这本书,所以我将 XUbuntu 粘在虚拟机上来模拟新鲜感......
我正在跟踪候选版本版本 3 - CLFS 的 Systemd,它击中了我第6章-临时系统-制作。 如果用户需要make
编译一个版本的Make,先有鸡还是先有蛋的因果关系问题出现 这引出了我的下一个逻辑问题。
什么时候斯图尔特·费尔德曼创建
make
于 1976 年,如果计算公众的操作系统不包含操作系统依赖项,他们如何编译他的程序make
?我是否可以假设下面的维基百科文章对于每个操作系统都是正确的?他是否必须打包 make 以包含 make 的每个操作系统相关版本才能完成 1?(见下文)
如果我需要程序A,但它只能在OS A上编译,即使我使用OS B,我是否也必须购买OS 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 脚本,并指示他们运行该脚本。