make 实用程序有多强大?
例如,在“制作”某些东西时,如果计算机断电,并且在下一次计算机启动后恢复制作,是否保证输出正确(即使文件系统不健壮)?是否还有其他可能导致 make 失败的情况?
make 实用程序有多强大?
例如,在“制作”某些东西时,如果计算机断电,并且在下一次计算机启动后恢复制作,是否保证输出正确(即使文件系统不健壮)?是否还有其他可能导致 make 失败的情况?
Make 正在运行时写入文件系统。因此,如果在执行此操作的过程中被中断(例如,如果计算机断电或用户终止进程),则可能会将不完整的文件写入文件系统,除非文件系统有某种机制防止这种情况发生(ZFS例如)。
GNU Make 本身不会检测文件是否不完整或损坏。只要它存在于带有时间戳的文件系统中,Make 就认为它是完整的。
本质上,没有。
Make 尝试通过一种机制来确定目标是否是“最新的”,如果目标文件已被部分写入,该机制在某些情况下可能会被愚弄。如果电源出现故障,可能会进行部分写入,并且操作系统可能已经更新了时间戳,因此“make”可能会出错。
通过使用原子操作并将所有内容同步到磁盘,make 使用的工具(例如编译器、链接器)在技术上是安全的。但是,每个工具都必须是安全的,“make”才能安全。
此外,同步所有内容可能会大大降低编译速度。
GNU Make 和它下面的工具一样强大。如果一个目标有一个当前的日期/时间,那么即使它只包含部分输出,Make 也会认为它是完整的。