C++/生成文件错误 : undefined reference to `main'

标签 c++ makefile

我的C++项目中的文件树是这样的:

project/
        source/
                main.cpp (with int main() function)
                a.cpp
                a.h
                b.cpp
                ...
        obj/
        Makefile

但是当我编译它时,它会抛出一个错误:“In function _start': (.text+0x20): undefined reference to main'”

我的 makefile 是:

EXECUTABLE = name_of_program
CXX = g++
CXXFLAGS = -Wall -Isource
LIBS =

SRC_DIR = source
OBJ_DIR = obj
SRC = $(wildcard $(SRC_DIR)/*.cpp)
OBJ = $(SRC:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o)

.PHONY: all clean

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJ)
        $(CXX) -o $@ $^ $(LIBS) 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
        $(CXX) $(CXXFLAGS) -o $@ $<
        $(CXX) $(CXXFLAGS) -o $@ -c $< 

clean:
        rm $(OBJ)

我应该更正哪些内容才能使其正确编译?我知道这是一个编译器错误,但我确定它与 Makefile 有关。

最佳答案

我没有足够的资源来重现该问题,但通过检查,您似乎在这里多了一行:

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
        $(CXX) $(CXXFLAGS) -o $@ $<
        $(CXX) $(CXXFLAGS) -o $@ -c $< 

删除第一行,这样您就不会尝试独立链接每个目标文件。

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
        $(CXX) $(CXXFLAGS) -o $@ -c $< 

关于C++/生成文件错误 : undefined reference to `main' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52452742/

相关文章:

c++ - makefile 生成 .gch 文件而不是 .o 文件的问题

c++ - c++中变量的奇怪行为

c++ - cpp 对 `class::method' 的 undefined reference

c++ - 宏在C++中展开

build - 有没有基于类似inotify机制的构建工具

bash - Makefile 中的脚本通常用于查找工具链的路径

c++ - 为什么 C++11 删除的函数会参与重载决议?

c++ - Boost 单元测试和 Visual Studio 2005/Visual C++ 以及 BOOST_AUTO_TEST_SUITE(stringtest) 命名空间?

python - 如何纠正这个 python3.4 lxml 多核检测?

linux - 来自 Linux 的 makefile 在 OpenSolaris 中不起作用