3

我已经有一段时间是 CS 学生了,似乎我(或我的许多朋友)在制作、安装等方面从未理解幕后发生的事情。

纠正我,但它是一种编译一组文件的方法吗?

像在 Windows 上那样“将程序安装到计算机上”是什么意思,因为当我用不同的语言(如 java 或 perl)编码时,我们不会安装我们编写的内容。我们将编译(如果不是,解释语言)并运行它。那么,为什么需要“安装”Skype等程序呢?

任何人都可以澄清这一点吗?我觉得这是我作为程序员需要知道的事情。

4

2 回答 2

5

Make是一个构建系统

Make 是一个构建系统 ,它只是一种编写编译程序所需步骤的脚本的方法。Make 特别适用于任何东西,但通常用于编译 C 或 C++ 程序。它为程序员简化并创建了一种标准方式来编写程序编写脚本,以便可以轻松构建和安装

为什么要构建系统

你看,如果你的程序是一个简单的源文件程序,那么使用 make 可能是一种矫枉过正,因为编译最简单的 c 程序就像

gcc simpleprogram.c -o simpleprogram.out

然而,随着软件规模的增长,它的复杂性也在增长,并且它需要如何构建的复杂性也在增长。例如,您可能想确定每个库安装在您正在编译的计算机上的哪个版本,您可能想在编译程序后运行一些测试以确定它是否正常工作,或者您可能想自动下载一些您的程序具有的依赖项。

大多数构建的软件最终都需要这些任务的混合。因此,他们没有重新发明轮子,而是使用允许编写脚本的构建系统。如果您熟悉 Java(您提到过),那么构建系统可以与 make 相媲美,但在 Java 世界中使用的是Apache Ant

为什么要安装

好吧,假设您使用了“make”命令而不是“make install”。“make”命令通常只用于准备程序进行编译,然后编译它。然而,一旦你的程序被编译,你所拥有的只是你编译程序所在目录中的一个可执行文件。程序、它的文档和它的配置文件并没有放在所有用户需要使用的适当目录中它。这就是“make install”的用途。Make install 获取与您刚刚编译的程序相关的所有文件,并将这些文件放在适当的目录中,以便每个人都可以使用它,并且每个组件都位于根据您的操作系统的预期目录中。

于 2013-06-10T03:53:56.960 回答
1
  1. make 是一种减少需要编译的代码量的软件——它比较源代码和目标代码的修改时间。如果代码已更改,则完成编译以构造目标,否则您可以跳过该步骤。

  2. 安装软件是将可执行文件/配置文件放置到正确的位置 - 可能会在此过程中构建一些文件。例如,您的 Skype 示例中的用户名

于 2013-06-10T02:56:49.320 回答