我已经成为一名CS学生了一段时间,似乎我(或我的很多朋友)从来不知道在制作,安装等方面的幕后发生了什么。
纠正我,但是要编制一组文件吗?
在Windows上“将程序安装到计算机”是什么意思,因为当我用不同语言(如java或perl)编码时,我们不会安装我们编写的内容。我们将编译(如果没有,解释语言)并运行它。那么,为什么像Skype这样的程序需要“安装”?
有人可以澄清一下吗?我觉得这是我作为程序员需要知道的事情。
答案 0 :(得分:5)
Make是一个build system,它只是一种编写程序所需步骤的脚本。 make具体可以与任何东西一起使用,但通常用于编译C或C ++程序。它简化并创建了一种标准方式,供程序员编写程序编写脚本,以便轻松构建和安装
你看,如果你的程序是一个简单的源文件程序,那么使用make可能是一种矫枉过正,因为编译最简单的c程序就像
一样简单。gcc simpleprogram.c -o simpleprogram.out
然而,随着软件规模的扩大,其复杂性不断增加,以及需要构建软件的复杂程度也在不断增加。例如,您可能想要确定要编译的计算机中安装的每个库的哪个版本,您可能希望在编译程序后运行一些测试以确定它是否正常工作,或者您可能想要自动下载某些您的程序具有的依赖关系。
大多数构建的软件最终需要混合使用这些任务。因此,他们不是重新发明轮子,而是使用一个允许编写脚本的构建系统。如果您熟悉Java(您提到过),那么构建系统可与make相媲美,但在java世界中使用的是Apache Ant。
好吧,我们假设您使用了“make”命令而不是“make install”。 “make”命令通常用于准备编译程序,并编译它。但是,一旦编译了程序,您所拥有的只是编译程序所在目录中的可执行文件。程序,其文档及其配置文件尚未放入所有用户使用所需的相应目录中它。这就是“make install”的用途。 Make install接受与您刚刚编译的程序相关的所有文件,并将所述文件放在适当的目录中,以便每个人都可以使用它,以便根据您的操作系统将每个组件放在预期的目录中。
答案 1 :(得分:1)
make是一个减少需要编译的代码量的软件 - 它将源代码的修改时间与目标进行比较。如果代码已更改,则完成编译以构造目标,否则您可以跳过该步骤。
安装软件会将可执行文件/配置文件放在正确的位置 - 可能会构建一些文件。例如。你的Skype示例中的用户名