如果保留二进制文件,删除目标文件是否安全?

时间:2017-03-11 08:42:57

标签: compilation gnu-make binaryfiles scons

用GNU Make(或SCons)编译(C / C ++)代码并成功创建二进制文件后,有没有理由保留.o目标文件?

我是否可以安全地删除它们,或者是否存在二进制引用它们的情况?

1 个答案:

答案 0 :(得分:1)

通过链接目标文件创建可执行文件(和 它们所依赖的库)目标文件是废料 您的可执行文件是关注。您可以安全地删除它们。

但是,如果使用构建系统(如GNU Make)构建可执行文件 或者Scons当然不建议让构建系统删除 成功构建的目标文件。

这种构建系统的主要目的是重建可执行文件, 当需要重建时,重建量最小 必要。如果可执行文件prog需要对象文件a.ob.oc.o 链接,您只更改源文件c.c,然后更改构建系统 会知道它只能通过重新编译prog来重建c.c 然后使用新的prog加上旧的c.oa.o重新b.o

但如果旧的a.ob.o仍然存在,它只会带来这种经济。 如果您已使用上次成功构建删除它们,则必须prog 尽管新的a.ob.o将是相同的,但是从头开始重建 作为旧的:浪费时间。

当然会有想要从头开始重建的场合 要这样做,您必须先删除所有目标文件。支持这一点 GNU中的需求让您为项目提供phony target, 通常称为clean,除了删除目标文件之外什么都不做 和构建的任何其他中间副产品。你用以下方式明确地调用它:

make clean

在Scons中,您不需要在构建项目中编写任何额外内容 清理中间产品。您只需运行scons -cscons --clean即可。 但无论哪种情况,您都不希望删除成功的目标文件 默认情况下构建 ,因为这会破坏构建系统的目的。