make clean 与 make distclean

虽然 Buildroot、U-Boot 和 Linux 内核是三个不同的工程,但它们在清理机制的逻辑设计上是高度通用的。

make clean:

在 Buildroot 中,执行 make clean 是一个非常彻底的操作,它会删除几乎所有编译出来的东西。

具体来说,它会删除以下内容:

1. 核心目标:output/ 文件夹

make clean 主要就是清理 output 目录下的几乎所有内容:

所有的源码和编译中间文件:即 output/build/

编译出的工具链:即 output/host/

所有的库文件和目标文件:即 output/target/ 和 output/staging/

最终生成的镜像文件:即 output/images/ 里的 zImage、rootfs.ext4 等。

2. 哪些东西不会被删除?

.config 文件:通过 make menuconfig 配置的选项会被保留。

dl/ 目录:下载好的源代码包(.tar.gz 等)不会被删。这样下次编译时不需要重新联网下载。

补丁:放在 package/fakeroot/ 目录下的 .patch 文件是安全的。

如果手动在 output/build/host-fakeroot-1.20.2 目录里改的代码,一旦执行 make clean:

之前的修改会永久丢失。

下次 make 时,Buildroot 会从 dl/ 目录重新解压一份原始的源码。

make distclean :

是 Buildroot 中最彻底、最高级别 的清理命令。它执行的操作比 make clean 狠得多。

简单一句话:它会把 Buildroot 还原成 刚下载完、还没开始用的状态。

1. 它会删除什么?

整个 output/ 目录:

辛苦编译的所有镜像(zImage, rootfs)。

手动修改的所有源码。

所有编译生成的工具链和中间文件。

会删除 .config 文件:

这是最致命的。通过 make menuconfig 配置的所有选项、选中的软件包、指定的路径,全部会被删除。

备份文件:

包括 .config.old 等所有配置备份。

2. 它会保留什么?

dl/ 目录:

它通常会保留下载好的源码包(.tar.bz2 等),这样下次编译不用重新下载。

package/ 里的自定义修改:

放在 package/fakeroot/ 目录下的 补丁文件(.patch)是安全的,会被保留。

|-----------------------|------------------|--------------------------------------------------|
| 命令 | 清理范围 | 适用场景 |
| make <pkg>-dirclean | 仅删除某个包的源码和编译产物 | 最常用。当你改了某个包的代码或补丁想重跑时用。 |
| make clean | 删除整个 output,保留配置 | 想重新编译整个系统,但不想重做 menuconfig 时用。 |
| make distclean | 全部删除,包括配置 | 想彻底重来,或者准备把 Buildroot 源码打包发给别人时用。需要重做 menuconfig |

虽然 Buildroot、U-Boot 和 Linux 内核是三个不同的工程,但它们在清理机制的逻辑设计上是高度通用的

执行 distclean 前 :无论是在内核还是 Buildroot,永远先执行一次 make savedefconfig,保存配置。

清理单个模块 :在 Buildroot 环境下,优先使用 make <pkg>-dirclean,这比在根目录下跑 make clean 要专业且高效得多。

相关推荐
HideF9 小时前
Linux sudo
linux
FlightYe9 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎10 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
牛马鸡niumasi11 小时前
【Linux】C语言文件操作
linux
say_fall11 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii12 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
AI+程序员在路上12 小时前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
默|笙13 小时前
【Linux网络】传输层协议TCP(1)---TCP报文介绍
linux·网络·tcp/ip
相思难忘成疾13 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
用户41071920132513 小时前
用 systemd 从零做一个系统健康巡检服务:脚本、沙箱与磁盘满排查实战
linux·ubuntu