Ошибка C ++ / Makefile: неопределенная ссылка на `main ' - PullRequest
0 голосов
/ 22 сентября 2018

Файловое дерево в моем проекте C ++ выглядит следующим образом:

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

Но когда я его скомпилирую, выдается ошибка: «В функции _start»: (.text + 0x20): неопределенная ссылка наmain '"

Мой make-файл:

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.

1 Ответ

0 голосов
/ 22 сентября 2018

Мне не хватает вашего источника, чтобы воспроизвести проблему, но при проверке кажется, что у вас есть дополнительная строка:

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

Удалите первую строку, чтобы вы не пыталисьсвязать каждый объектный файл независимо.

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
        $(CXX) $(CXXFLAGS) -o $@ -c $< 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...