2016-12-30 2 views
0
#include <iostream> 
#include <string> 
#include <fstream> 

int main (void) 
{ 
    // Nothing here. 
} 

Я использую Makefile для компиляции.Неопределенная ссылка, предположительный makefile не использует заголовочные файлы

CXXFLAGS = -std=c++11 -O2 -g -Wall -fmessage-length=0 

OBJS  = ProgramEntry.o 

LIBS  = 

TARGET  = Reading 

$(TARGET): $(OBJS) 
    $(CXX) -o $(TARGET) $(OBJS) $(LIBS) 

all: $(TARGET) 

clean: 
    rm -f $(OBJS) $(TARGET) 

Результирующая ссылка не определена.

undefined reference to -- 

Я думаю, что makefile не использует заголовочный файл. Могу ли я узнать, как исправить файл make, в случае, если я добавлю каталог для файлов заголовков.

+3

Выглядит больше как ошибка компоновщика для меня. – Unimportant

+0

@ user1320881 Это ошибки компоновщика, но они могут быть вызваны ошибками makefile (например, объектный файл не перестраивается, потому что он не зависит от измененного заголовка) – chtz

ответ

3

Использование заголовков, или вы получите ошибку компилятора, а не ошибку связи.

Измените следующую строку к следующему:

OBJS  = ProgramEntry.o GetNodes.o GetElements.o MeshData.o 

Или

OBJS  = *.o 

Чтобы добавить все объекты в текущем каталоге.

+0

Спасибо. Есть ли способ добавить все * .o файлы. Так как я могу добавить или удалить файлы * .cpp в каталоге. –

+0

@Raavi - Смотрите мое редактирование – StoryTeller

1

Вы связываетесь только с одним из ваших объектных файлов, поэтому функции, определенные в других, не попадают в вашу программу.

Добавить все ваши .o s в OBJS. В конце концов, похоже, это точка этой переменной?

Смежные вопросы