用GNU Make(或SCons)编译(C / C ++)代码并成功创建二进制文件后,有没有理由保留.o
目标文件?
我是否可以安全地删除它们,或者是否存在二进制引用它们的情况?
答案 0 :(得分:1)
通过链接目标文件创建可执行文件(和 它们所依赖的库)目标文件是废料 您的可执行文件是关注。您可以安全地删除它们。
但是,如果使用构建系统(如GNU Make)构建可执行文件 或者Scons当然不建议让构建系统删除 成功构建的目标文件。
这种构建系统的主要目的是重建可执行文件,
当需要重建时,重建量最小
必要。如果可执行文件prog
需要对象文件a.o
,b.o
和c.o
链接,您只更改源文件c.c
,然后更改构建系统
会知道它只能通过重新编译prog
来重建c.c
然后使用新的prog
加上旧的c.o
和a.o
重新b.o
。
但如果旧的a.o
和b.o
仍然存在,它只会带来这种经济。
如果您已使用上次成功构建删除它们,则必须prog
尽管新的a.o
和b.o
将是相同的,但是从头开始重建
作为旧的:浪费时间。
当然会有想要从头开始重建的场合
要这样做,您必须先删除所有目标文件。支持这一点
GNU中的需求让您为项目提供phony target,
通常称为clean
,除了删除目标文件之外什么都不做
和构建的任何其他中间副产品。你用以下方式明确地调用它:
make clean
在Scons中,您不需要在构建项目中编写任何额外内容
清理中间产品。您只需运行scons -c
或scons --clean
即可。
但无论哪种情况,您都不希望删除成功的目标文件
默认情况下构建 ,因为这会破坏构建系统的目的。