makefile链接问题

时间:2012-11-27 11:24:56

标签: makefile g++ linker-errors

我有一个小问题..我试图修改一个工作的Makefile来链接我决定在我的代码simpletrial.cpp中添加的函数(该函数是IniFile.cpp) 我以前的工作Makefile是:

include Makefile.arch
TESTS           := simpletrial.cpp
TESTO           := $(TESTS:.C=.o)
TEST            := simpletrial

OBJ             = $(TESTO)
PROGRAMS        = $(TEST)

CXXFLAGS      += 
CXXFLAGS      += 
GLIBS         += 

.SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf)

all:            $(PROGRAMS)

$(TEST):        $(TESTO)
        $(LD) $(LDFLAGS) $^ $(GLIBS) $(OutPutOpt)$@
        @echo "$@ done"

clean:
        @rm -f $(OBJ) $(TESTO) core *~ src/*~ include/*~

.$(SrcSuf).$(ObjSuf):
        $(CXX) $(CXXFLAGS) -c $< -o $@

我试过没有成功编译和链接IniFile.cpp但我总是收到错误“未定义引用'IniFile :: etc等 谢谢!

1 个答案:

答案 0 :(得分:0)

您的链接行如下:

$(LD) $(LDFLAGS) $^ $(GLIBS) $(OutPutOpt)$@

在这里你链接到$ ^这是规则的所有预先要求,在这种情况下是$(TESTO)并且是simpletrial.o,你似乎没有IniFile.cpp,所以它不会与它联系。要修复它,只需将IniFile.cpp添加到您的测试中,如下所示:

TESTS           := simpletrial.cpp InFile.cpp

然后它应该编译并将两个文件链接在一起并因此产生simpletrial。

此外,我认为你的TESTO系列也可能需要改变:

TESTO           := $(TESTS:.cpp=.o)

那应该取$(TESTS)变量中的值并将后缀从.cpp更改为.o,当前定义只会将.C更改为.o ...