目标'Project1.exe'配方失败

recipe for target 'Project1.exe' failed

本文关键字:失败 exe Project1 目标 方失败      更新时间:2023-10-16

我试图在Dev-C++中编译一个简单的c文件,它在第25行显示了一个错误C:UsersvarunDesktopcprogMakefile.win recipe for target 'Project1.exe' failed.

Makefile.win

# Project: Project1
# Makefile created by Dev-C++ 5.6.2
CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o Untitled2.o
LINKOBJ  = main.o Untitled2.o
LIBS     = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc
INCS     = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include"
CXXINCS  = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++"
BIN      = Project1.exe
CXXFLAGS = $(CXXINCS) 
CFLAGS   = $(INCS) 
RM       = rm.exe -f
.PHONY: all all-before all-after clean clean-custom
all: all-before $(BIN) all-after
clean: clean-custom
    ${RM} $(OBJ) $(BIN)
$(BIN): $(OBJ)
    **$(CC) $(LINKOBJ) -o $(BIN) $(LIBS)**
main.o: main.c
    $(CC) -c main.c -o main.o $(CFLAGS)
Untitled2.o: Untitled2.c
    $(CC) -c Untitled2.c -o Untitled2.o $(CFLAGS)

错误

C:UsersvarunDesktopcprogUntitled2.o    Untitled2.c:(.text+0x0): multiple definition of `main'
C:UsersvarunDesktopcprogmain.o main.c:(.text+0x0): first defined here
C:UsersvarunDesktopcprogcollect2.exe   [Error] ld returned 1 exit status
25      C:UsersvarunDesktopcprogMakefile.win   recipe for target 'Project1.exe' failed

输出的重要位是:

C:UsersvarunDesktopcprogUntitled2.o    Untitled2.c:(.text+0x0): multiple definition of `main'

它告诉你,你有两个函数main的定义。在一个可执行文件中只需要一个这样的定义。错误的下一行告诉您,定义是:

C:UsersvarunDesktopcprogmain.o main.c:(.text+0x0): first defined here

所以在Untitled2.c中定义了函数main,在main.c中定义了另一个函数main。删除其中一个。从名称上看,main.c可能完全没有必要,但如果没有看到文件,我就无法判断。