Re: [问题] linker error

楼主: anfranion (南‧生命的意義是經歷)   2012-05-12 19:47:31
既然是link error
就一定是link层面的东西,也就是档案和档案之间的关系出了问题
在这里undefined reference代表他不知道要去哪里找那个函数
我自己写了类似的模式测了一下,问题应该在于在Makefile里的
xxxxx.o: <dependent files>
xxxxx
那个dependent files就我的经验来说,应该是只能有一个.cpp档
原因应该是一个.cpp档就只能对应到一个.o档
不然在link层次时会出现找不到位置的情况
(这我猜的啦,我跟linker没很熟XD 有兴趣的人我还可以问问)
所以正确的写法应该是:
*******
AR := ar
ARFLAGS := cr
CXX := g++
CPPFLAGS := -O2 -I../lib
all : ../bin/graphlab
@echo -n ""
clean :
rm *.o ../bin/graphlab
../bin/graphlab : main.o sys_cmd.o user_cmd.o graph.o ../lib/libgraphlab.a
$(CXX) $^ -o $@
main.o : main.cpp sys_cmd.h user_cmd.h
$(CXX) $(CPPFLAGS) -c $< -o $@
sys_cmd.o : sys_cmd.cpp sys_cmd.h ../lib/cmd.h
$(CXX) $(CPPFLAGS) -c $< -o $@
user_cmd.o : user_cmd.cpp user_cmd.h ../lib/cmd.h
$(CXX) $(CPPFLAGS) -c $< -o $@
graph.o : graph.cpp graph.h ../lib/cmd.h
$(CXX) $(CPPFLAGS) -c $< -o $@
****
我测了一下这样应该就可以过了~
BTW是Makefile应该还有更方便的写法:$
不需要每个档案都写一段
有人有兴趣我再PO上来好了(〞︶〝*)
作者: luchiwei (便随)   2012-05-12 19:52:00
大感谢<(_ _)>等一下试试看,另外"更方便"详细希望!!好像还是没有用耶XDD
楼主: anfranion (南‧生命的意義是經歷)   2012-05-12 20:57:00
要不要贴出新的Makefile来看看呢~//你要记得把user_cmd.o那边的graph.cpp也修掉喔

Links booklink

Contact Us: admin [ a t ] ucptt.com