目标“Project1.exe”的配方失败

Posted

技术标签:

【中文标题】目标“Project1.exe”的配方失败【英文标题】:recipe for target 'Project1.exe' failed 【发布时间】:2014-04-15 13:09:07 【问题描述】:

我尝试在Dev-C++ 中编译一个简单的 c 文件,它在第 25 行显示错误 C:\Users\varun\Desktop\cprog\Makefile.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:\Users\varun\Desktop\cprog\Untitled2.o    Untitled2.c:(.text+0x0): multiple definition of `main'
C:\Users\varun\Desktop\cprog\main.o main.c:(.text+0x0): first defined here
C:\Users\varun\Desktop\cprog\collect2.exe   [Error] ld returned 1 exit status
25      C:\Users\varun\Desktop\cprog\Makefile.win   recipe for target 'Project1.exe' failed

【问题讨论】:

它肯定也说明了为什么它失败了。生成文件并且很可能是正确的。您必须向我们展示构建命令的准确、完整的输出。没有它,我们无法帮助您。 由于是链接命令失败,我们很可能在寻找链接器错误。 我已经编辑了问题并添加了构建命令的输出,请看一下 它说你已经定义了多个主要方法。确保您没有这样做。 【参考方案1】:

输出的重要一点是:

C:\Users\varun\Desktop\cprog\Untitled2.o    Untitled2.c:(.text+0x0): multiple definition of `main'

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

C:\Users\varun\Desktop\cprog\main.o main.c:(.text+0x0): first defined here

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

【讨论】:

以上是关于目标“Project1.exe”的配方失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Cygwin 中构建 Emacs 时,目标“自动加载”的配方失败

无法制作 raylib,收到 makefile 错误 576:目标“rmodels.o”的配方失败

无法从源安装 python 3.6.3:目标“Programs/python.o”的配方失败

安装 CPAN 模块时“目标 'pm_to_blib' 的配方失败”(Text::CSV、Tie::RegexpHash、Log::Log4perl)

致命错误:无法创建输出文件“project1.exe”

0x75BA812F 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: