make 及 make clean 的作用

本文介绍了在源代码安装软件时,`make`和`makeinstall`命令的作用。`make`通常用于根据makefile编译源代码生成可执行文件,而`makeclean`用于清除先前编译产生的文件,确保重新编译的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编译源代码安装软件时,很熟悉的步骤是 make 及 make install, 例如:

# ./configure
# make
# make install

以下是 make 及 make clean 的分别:

make
一般上, make 是 make all 的简写,它根据 makefile 的规则,将 C/C++ 档案编译成 .o 档案,然后进一步产生可执行档。

make clean
如果之前曾经编译过,make clean 可以将之前产生的可执行档及其他档案删除, 有时发现重新编译出来的档案没有更新, 可以先执行 make clean。

### 区别与用途 `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
发出的红包

打赏作者

reg183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值