linux停止编译进程,linux – 如何继续编译?

我知道我可以随时中断make进程而无需再次重新编译整个源代码树.据我所知,如果目标尚未编译,则仅编译目标,或者在最后一次编译后修改源代码.

但是,如果我中断make,肯定会有一个或多个(取决于并发级别)半就绪二进制文件.下次我运行make时它对它们有什么作用?或者,当我按下Ctrl C以避免部分编译的二进制文件时,它是否完成当前目标?

解决方法:

简单来说,您可以将make视为具有(可能很大)步数,其中每个步骤将许多文件作为输入并创建一个文件作为输出.

步骤可能是“将file.c编译为file.o”或“使用ld将main.o和file.o链接到程序”.如果使用CtrlC中断make,则将终止当前正在执行的步骤,该步骤将(或应该)删除它正在处理的输出文件.通常没有留下任何“半准备好的二进制文件”.

重新启动make时,它将查看所​​有输入和输出文件的时间戳,并重新运行以下步骤:

>输入文件的时间戳比输出文件的时间戳更新

>输出文件不存在

这通常意味着如果一个步骤需要很长时间才能运行(这在现代计算机上很少见,但是大型程序的ld步骤在设计make时很容易花费很多分钟),那么停止并重新启动make将从该步骤开始开始.

普通Makefile的实际情况要比上面的描述复杂得多,但基本原理是相同的.

标签:linux,interrupt,compiling,make,compiler

来源: https://codeday.me/bug/20190809/1628517.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值