You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile总是重新编译二进制文件:目标文件不存在问题求助

问题分析与解决

你的问题核心是目标文件名和实际生成的可执行文件名不匹配:

在Windows环境下,gcc编译生成的可执行文件默认会带.exe后缀,而你的Makefile中指定的TARGET是myprogram(无后缀)。所以每次执行make时,make会检查是否存在名为myprogram的文件——但实际生成的是myprogram.exe,因此make判定目标文件不存在,会重复执行链接步骤。

解决方法

直接修改Makefile中TARGET的定义,让它和实际生成的可执行文件名一致:

# Executable name
TARGET = myprogram.exe

修改后重新执行make:

  • 第一次执行会生成main.o和myprogram.exe
  • 第二次执行时,make会检查到myprogram.exe已经存在,且比依赖的main.o更新,就会输出:make: 'myprogram.exe' is up to date.,不会重复编译。

补充说明

如果你希望保持TARGET为myprogram(不带后缀),也可以在链接命令中显式指定输出文件名带.exe,但这种方式不如直接修改TARGET直观:

$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -o $@.exe $(OBJS)

不过更推荐第一种方法,因为它符合make的目标文件匹配逻辑,后续维护也更清晰。

内容的提问来源于stack exchange,提问作者Carlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:36:02