未定义的引用,假设makefile不使用头文件

时间:2016-12-30 17:57:45

标签: c++ makefile undefined-reference

Task.Run(async () => await ThrowAfterAsync("C", cancelToken, 1000), cancelToken)

我正在使用Makefile进行编译。

#include <iostream>
#include <string>
#include <fstream>

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

导致未定义的引用。

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)

我认为makefile没有使用任何头文件。如果我为头文件添加目录,我可以知道如何修复make文件。

2 个答案:

答案 0 :(得分:3)

它正在使用标头,否则您将收到编译器错误,而不是链接错误。

将以下行更改为:

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

OBJS        = *.o

添加当前目录中的所有对象。

答案 1 :(得分:1)

您只在一个目标文件中进行链接,因此其他人定义的功能不会进入您的程序。

将所有.o添加到OBJS。毕竟,这似乎是该变量的重点?