make实用程序有多强大?
例如,在“制作”某些内容时,如果计算机断电,并且在下一台计算机启动后恢复生产,则输出保证是正确的(即使文件系统不是强大的)?还有其他情况可能导致制造失败吗?
答案 0 :(得分:4)
Make正在运行时写入文件系统。因此,如果它被中断(例如,如果计算机断电或用户杀死进程),那么可能会将不完整的文件写入文件系统,除非文件系统有某种机制阻止这种情况(ZFS)例如)。
GNU Make本身不会检测文件是否不完整或损坏。只要文件系统中存在时间戳,Make认为它已完成。
答案 1 :(得分:2)
基本上,没有。
尝试通过一种机制来确定目标是否是“最新的”,如果目标文件已被部分写入,则该机制在某些情况下可能会被欺骗。如果电源出现故障,操作系统可能已更新时间戳,则可以进行部分写入,因此“make”可能会出错。
通过使用原子操作并将所有内容同步到光盘,make(例如编译器,链接器)使用的工具在技术上是可行的。但是,每个工具都必须安全,才能使“制造”变得安全。
也可以同步所有内容,这可能会减慢编译速度。
答案 2 :(得分:0)
GNU Make与其下的工具一样健壮。如果目标具有当前日期/时间,则即使它仅包含部分输出,Make也会认为它已完成。