Answers:
Make是通用的工作流程程序,通常用于编译。但是它可以用于任何东西。
当您执行“ make all”之类的操作时,make程序将从当前目录中名为“ Makefile”的文件中执行名为“ all”的规则。该规则通常调用编译器将一些源代码编译为二进制文件。
当您执行“ make install”时,make程序将从上一步获取二进制文件并将其复制到一些适当的位置,以便可以对其进行访问。与在Windows上不同,安装仅需要复制一些库和可执行文件,因此没有注册表要求。简而言之,“进行安装”只是将编译的文件复制到适当的位置。
all
中Makefile
,哪些该节的外观的结束标记喜欢,所以我能看到规则处理all
站。
make install
做Makefile
作者想要做的一切。通常,到此为止,更改构建目录已经太晚了,因为在构建过程中通常会更早地知道它,因此可以使用正确的路径名来引用帮助文件和配置文件。
许多项目使用GNU Autotools尝试改善它们在硬件和操作系统差异之间的可移植性。(不同的Unix变体使用略有不同的标头来声明稍微偏离通常路径的函数,但大多数程序需要一个或另一个在不同位置声明的函数。)
当项目确实使用Autotools时,通常的安装方法是:
./configure
make
make install
在./configure
通常允许你使用像命令行选项--prefix /opt/apache
或类似指定一个不同的路径名的东西。/usr/local/
是常见的默认值prefix
。对于本地构建的软件而言,将其存放在一个地方要容易得多,而对发行版本提供的软件则更容易存放在“主目录”中:/usr/
/bin/
等等。(打包程序非常小心,切勿触摸文件/usr/local/
-他们知道该文件仅供系统管理员使用。)
无论如何,./configure --prefix /path/to/new/prefix
都会在中设置一个变量,该变量在Makefile
编译程序,修改手册页时可用,以便它们指向文件的正确位置,修改配置文件等。因此,make
将专门针对所需的安装位置构建软件,并make install
将其安装到该位置。
即使没有最后make install
一步,大多数程序也可以运行- ./program_name
经常会启动它们。这绝对是每个项目的工作-,例如postfix
,qmail
等等,是由许多不同的移动部件组成的,并依靠它们共同协作。其他类(例如ls
或su
可能具有足够的独立性,可以从其内置目录中很好地执行)。(这通常不是有用的,但有时非常有用。)
但是,并非所有项目都使用Autotools-它们庞大,复杂且难以维护。手写Makefile
s 的编写要简单得多,而且我个人认为,仅分发Makefile
带有可用配置变量的简单代码,对开发人员和用户而言都容易得多。(尽管该./configure ; make ; make install
咒语在工作时对用户来说确实很容易。)
关于在Linux上安装软件,要提到的最重要的一点是,从您的发行版安装软件更加可靠和容易(这就是目的!)。仅make install
在没有其他方法的情况下使用(还应考虑其他程序)。
Windows用户的常见错误是从不同位置下载程序并尝试安装它们,而忘记了签出他们的分发软件包,这些软件包可以通过单击或命令安装(在软件包管理器中)。
还请记住,在Linux上没有病毒感染的主要原因之一是(或应该)从中央(受信任)位置而不是许多随机站点安装软件。
需要特别注意的是,尽管Ubuntu之类的发行版始终包含过时的软件包,但Arch Linux之类的发行版始终都是最新的(尽管它们实际上并不提供针对Linux发行的每个程序,例如Debian / Ubuntu)。
至于使用包管理器时会发生什么,它会检查依赖关系,下载包,解压缩,根据FHS和发行版自己的指南将所有文件放到适当的目录中,以及一些您可能会发现的例程。从程序包管理器的手册页中。
make install
从程序员的角度简要概述了通过步骤完成的常见事情。