`make clean` 和 `make distclean` 之间的区别

iro*_*and 31 ffmpeg make

我在此页面的帮助下从源代码安装了 ffmpeg。 https://trac.ffmpeg.org/wiki/CentosCompilationGuide

我注意到本教程的大部分内容都make distcleanmake install. 但make clean安装后只有 libvpx 调用。

根据该文档, http: //www.gnu.org/software/automake/manual/automake.html#Cleanmake clean删除所有make创建的文件,并删除所有创建的make distclean文件./configure

清洁

从构建树中删除由 make all 构建的文件。

使 distclean

另外擦除任何 ./configure 创建的内容。

我知道make distclean下次安装需要这样做,但我不明白为什么make clean在安装后调用。

安装的 ffmpeg 工作没有问题。所以我问这个问题是因为我只是想提高我对linux的了解。有人给我一个解释会很有帮助。

EdH*_*EdH 31

之后使用的参数make仅取决于编写Makefile. 您稍后参考的文档 Autotools 只是创建Makefile.

典型的标准是make clean将删除所有中间文件,make distclean并使树与解压缩(或非常接近)时的状态一致,包括删除任何配置脚本输出。例如,这就是 Linux 内核的工作方式。

换句话说,它完全依赖于每个库的开发人员,这就是为什么有时它clean和其他时候它是distclean. 顺便说一句,您不需要运行clean/ distclean- 我猜他们让您运行它只是为了节省磁盘空间。make install通常将文件复制到目标目录(再次取决于开发人员) - 通常位于/usr/lib/usr/bin(也由配置脚本确定,如果它是 Autotools 构建系统)

这些细微差别是人们使用 RPM 或 Debian 软件包等软件包管理系统的主要原因。


mpy*_*mpy 6

据我了解,这只是为了安全的磁盘空间。编译一些程序后,您将拥有很多文件,例如不再需要的目标文件,因为它们在二进制文件中链接在一起。所有这些都可以通过再次花费一些 CPU 时间来重新创建。

以当前ffmpeg代码为例:

  • 克隆gitrepo 后,源需要 53 160 kB
  • 配置运行后是 53 632 kB
  • 编译后我们有10多倍的初始值:673 668 kB
  • make clean 将其减少到 53 636 kB
  • 最后在make distclean我们接近克隆后的水平之后:53 188 kB