“Make install”与“Make install clean”有什么区别?

4
在*nix系统中,当我编译软件时,我应该做什么:
# make install

vs

# make install clean

?

1个回答

3

当您使用参数调用make时,您正在为其提供一组目标。

在FreeBSD手册的升级端口部分中有关此问题的讨论,其中提到:

Unlike the usual make install clean command, it will upgrade all
the dependencies prior to building and installing the selected
port.

[...]

Note: You can save two extra steps by just running make install
clean instead of make, make install and make clean as three
separate steps.

此外,顺便提一下:除非真的有必要,不要以root身份构建您的软件包。通常情况下,您应该使用非特权帐户进行工作,然后在最后一步执行sudo make install(如果确实需要)。更好的方法是将非特权用户添加到具有写访问权限的安装目录组中,甚至更好的方法是将其安装到非系统区域(例如,使用./configure时,您可以使用--prefix=),因为大多数系统无论是Linux还是BSD,通常都有用于安装软件的软件包和打包系统。

那么,“make install clean”相当于执行三个单独的命令:make、make install和make clean吗? - Hank8
@Hank8 和 @yi_H 实际上这是一个带有两个目标的命令,从某种意义上说,它等同于执行三个单独的命令。在 make 命令本身中隐含着对 make all 的调用,预计但并非必需,make install 具有相应的依赖关系,使它变得等效。 - aculich
@aculich:不对,纯粹的make意味着执行默认命令(可以在Makefile中配置)。如果指定了命令,则不会执行该命令(除非它是指定命令之一的依赖项)。 - Karoly Horvath
@yi_H,你说得对,这意味着执行与makefile中第一个目标相对应的默认命令。GNU和许多其他程序的惯例是将all:作为第一个目标,以便它成为默认值。再次强调,按照惯例,make install通常(但不一定)具有调用“make all”等效所需的依赖项。 - aculich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接