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