linux系统命令make、clean、distclean的用法讲解

makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
  makefile带来的好处就是–“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make.可见,makefile都成为了一种在工程方面的编译方法。
make
根据Makefile文件编译源代码、连接、生成目标文件、可执行文件。
make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
make install
将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录。
make dist
产生发布软件包文件(即distribution package)。这个命令将会将可执行文件及相关文件打包成一个tar.gz压缩的文件用来作为发布软件的软件包。
它会在当前目录下生成一个名字类似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我们在configure.in中定义的AM_INIT_AUTOMAKE(PACKAGE, VERSION)。
make distcheck
生成发布软件包并对其进行测试检查,以确定发布包的正确性。这个操作将自动把压缩包文件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,最后提示你软件包已经准备好,可以发布了。
make distclean
类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile文件。

### 区别与用途 `make clean` 和 `make distclean` 是构建系统中的两个常见目标,用于清理项目目录的不同层次的内容。 #### `make clean` 此命令的主要目的是清除编译过程中生成的目标文件和其他中间产物,以便重新构建整个项目。执行该操作后,源代码不会受到影响,但所有由编译器生成的二进制文件(如 `.o` 文件、可执行文件等)会被删除[^1]。这使得开发者可以轻松地重建项目而无需担心旧版本的影响。 ```bash make clean ``` #### `make distclean` 相比之下,`make distclean` 不仅会完成 `make clean` 所做的工作,还会进一步移除配置阶段产生的文件和目录。这意味着它不仅清除了编译过程中的临时文件,还恢复到初始状态,即刚解压源码包的状态。通常情况下,这包括但不限于: - 删除通过 `configure` 脚本生成的 Makefile 及其他自动生成的文件。 - 清理任何特定于系统的设置或缓存数据。 因此,在某些场景下运行 `make distclean` 后可能需要再次调用 `./configure` 来重新初始化构建环境。 ```bash make distclean ``` ### 示例说明 假设有一个使用 Autotools 构建工具链管理的 C/C++ 工程,则其典型的开发流程如下所示: 1. 配置项目: ```bash ./configure --prefix=/usr/local ``` 2. 编译并安装软件: ```bash make && sudo make install ``` 如果希望彻底重头开始构建该项目,那么应该先执行以下命令之一来清理之前的构建残留物: - 如果只是想重新编译而不改变当前配置参数,可以选择 `make clean`. - 若打算切换不同的平台或者修改选项后再进行全新一轮构建,则更适合采用 `make distclean`. ### 总结 | 命令 | 功能描述 | |---------------|----------------------------------------------------------------------------------------------| | **make clean** | 移除编译期间创建的对象文件(.o), 库(lib*.so 或者 .a),以及最终产品(如executables) | | **make distclean**| 完全擦除一切非原始资源,包括 configure 过程中定制化生成的各种脚本和Makefiles | 两者都旨在维护项目的整洁度,但是作用范围有所不同;前者专注于减少磁盘占用量以支持增量式的快速迭代测试,后者则更倾向于准备干净 slate 开始新一轮跨架构移植尝试或其他大幅度改动前后的准备工作.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值