如果我保留二进制文件,删除目标文件是否安全?
Is it safe to remove the object files if I keep the binary?
使用 GNU Make(或 SCons)编译(C/C++)代码并成功创建二进制文件后,是否有任何理由保留 .o
目标文件?
我能否始终安全地删除它们,或者是否存在二进制文件引用它们的情况?
通过链接目标文件(和
它们所依赖的库)目标文件是浪费 material 到目前为止
您的可执行文件是相关的。您可以安全地删除它们。
但是,如果您使用 GNU Make 等构建系统构建可执行文件
或 Scons 使该构建系统删除肯定是不可取的
成功构建的目标文件。
这种构建系统的主要目的是重建你的可执行文件,
当它需要重建时,重建的数量最少
必要的。如果可执行文件 prog
需要目标文件 a.o
、b.o
和 c.o
被链接并且您只更改源文件 c.c
,然后是构建系统
将知道它可以仅通过重新编译 c.c
来重建 prog
然后将 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
。
但是在任何一种情况下,您都不想删除成功的对象文件
默认构建 ,因为这违背了构建系统的目的。
使用 GNU Make(或 SCons)编译(C/C++)代码并成功创建二进制文件后,是否有任何理由保留 .o
目标文件?
我能否始终安全地删除它们,或者是否存在二进制文件引用它们的情况?
通过链接目标文件(和 它们所依赖的库)目标文件是浪费 material 到目前为止 您的可执行文件是相关的。您可以安全地删除它们。
但是,如果您使用 GNU Make 等构建系统构建可执行文件 或 Scons 使该构建系统删除肯定是不可取的 成功构建的目标文件。
这种构建系统的主要目的是重建你的可执行文件,
当它需要重建时,重建的数量最少
必要的。如果可执行文件 prog
需要目标文件 a.o
、b.o
和 c.o
被链接并且您只更改源文件 c.c
,然后是构建系统
将知道它可以仅通过重新编译 c.c
来重建 prog
然后将 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
。
但是在任何一种情况下,您都不想删除成功的对象文件
默认构建 ,因为这违背了构建系统的目的。