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

Makefile编译报错:gcc提示‘no input files’问题求助

问题排查与修复:Makefile链接阶段无输入文件错误

错误现象

执行make时出现以下错误:

gcc -Wall -ansi -pedantic -std=c90  -o bin/openu-assembler
gcc: fatal error: no input files
compilation terminated.
make: *** [Makefile:30: bin/openu-assembler] Error 1

原因分析

  1. 链接命令使用未定义变量:生成可执行文件的规则中,你使用了未定义的$(OBJ)变量,导致gcc命令没有接收到任何目标文件(.o)作为输入参数。
  2. 源文件目录配置不匹配:你提到“源文件存放在bin目录中”,但Makefile中SRC_FOLDER = src,这会导致$(wildcard $(SRC_FOLDER)/*.c)无法匹配到源文件——不过你说obj目录已生成文件,可能是表述笔误,若源文件实际在src目录则此点可忽略。

修复方案

1. 修正Makefile的链接规则

将生成可执行文件的命令中的$(OBJ)替换为自动变量$^,$^会自动指代当前目标的所有依赖项(即所有编译好的.o文件)。

修复后的关键规则:

# create the executable file, all object files must be created first
$(EXECUTABLE): $(SOURCE_FILES:$(SRC_FOLDER)/%.c=$(OBJ_FOLDER)/%.o)
    $(CC) $(C_FLAGS) $^ -o $@

2. 确认源文件目录匹配

如果源文件确实存放在bin目录,需要修改Makefile中的SRC_FOLDER定义:

# folders
SRC_FOLDER = bin  # 改为实际的源文件目录
OBJ_FOLDER = obj
BIN_FOLDER = bin

完整修复后的Makefile

# Set the compiler and flags
CC = gcc
C_VERSION = c90
C_FLAGS = -Wall -ansi -pedantic -std=$(C_VERSION)

# project name
PROJECT_NAME = openu-assembler

# folders
SRC_FOLDER = src  # 根据实际源文件目录调整
OBJ_FOLDER = obj
BIN_FOLDER = bin

# object files
SOURCE_FILES = $(wildcard $(SRC_FOLDER)/*.c)

# the executable file
EXECUTABLE = $(BIN_FOLDER)/$(PROJECT_NAME)

# run the project
run: $(EXECUTABLE)
    ./$(EXECUTABLE)

# compile and run
compile: clean $(EXECUTABLE)
    ./$(EXECUTABLE)

# create the executable file, all object files must be created first
$(EXECUTABLE): $(SOURCE_FILES:$(SRC_FOLDER)/%.c=$(OBJ_FOLDER)/%.o)
    $(CC) $(C_FLAGS) $^ -o $@

# for each source file, create an object file
$(OBJ_FOLDER)/%.o: $(SRC_FOLDER)/%.c
    $(CC) $(C_FLAGS) -c $< -o $@

# clean the project
clean:
    rm -f $(OBJ_FOLDER)/*.o
    rm -f $(BIN_FOLDER)/$(PROJECT_NAME)

验证

执行make clean清理旧文件,再执行make,即可正常编译链接生成可执行文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:17:37