我弄乱了目标文件系统中的一些文件,因此我想重新组装它。 但不是重建全部。
make clean
只会删除所有输出和构建目录。
应使用哪个命令递归地删除仅目标目录和所有相关的 .stamp_some_step 文件,强制 buildroot 根据当前配置重新组装文件系统,而不是一遍又一遍地重建所有库和二进制文件?
我弄乱了目标文件系统中的一些文件,因此我想重新组装它。 但不是重建全部。
make clean
只会删除所有输出和构建目录。
应使用哪个命令递归地删除仅目标目录和所有相关的 .stamp_some_step 文件,强制 buildroot 根据当前配置重新组装文件系统,而不是一遍又一遍地重建所有库和二进制文件?
Buildroot会在每个软件包的构建目录中使用.stamp_xxx跟踪构建进度。实际上,target install是每个软件包的最后一个阶段。因此,从每个软件包构建目录中删除.stamp_target_installed文件会导致重新安装到目标中。
在最新的Buildroot中,您可以简单地执行以下操作:
rm -rf output/target
find output/ -name ".stamp_target_installed" -delete
rm -f output/build/host-gcc-final-*/.stamp_host_installed
在一些较旧的buildroot版本中,输出目录中还有其他几个文件跟踪骨架的创建。引用邮件列表消息,我们可以总结如下:
“rm -rf output/target && make”命令有效吗?
正如Thomas所说,它是无效的。但是,一些非官方的hack存在:
- 删除
build/.root
将强制重新安装骨架- 删除
build/*/.stamp_target_installed
强制重新安装每个目标软件包- 根据您的工具链,您可以通过删除以下内容重新安装libc和co:
stamps/ext-toolchain-installed
(外部)stamps/ct-ng-toolchain-installed
(ctng)target/lib/libc.so.0
(buildroot)
然后再次运行make。
请注意,这些技巧可能会出现很多问题。目前唯一官方重新构建目标的方法是“make clean”。
make cleantarget
命令? - xakepp35output/build/.root
已经不存在了。 - pevik2022.05-rc1
的基础上构建需要执行 rm -f $(BUILD_DIR)/host-gcc-final-*/.stamp_host_installed
,否则 libstdc++.so.6
将不会被安装。 - Jaakko<pkg>-uninstall
命令:http://lists.busybox.net/pipermail/buildroot/2013-February/067097.htmlBuildroot 的目标是简单而非功能强大。如果您需要更复杂的构建系统,我建议使用 Yocto。关于两者差异的精彩讨论可以在这里找到:https://youtu.be/13LZ0szWSVg - John Moon