很多時(shí)候,編譯的時(shí)候,現(xiàn)實(shí)函數(shù)未定義的引用,肯定是鏈接庫(kù)出問(wèn)題了。我遇到過(guò)幾種情況:
1.路徑添加失敗。在makefile中,我添加了庫(kù)的路徑,不管是絕對(duì)路徑還是相對(duì)路徑,結(jié)果都失敗了。這到底是什么原因?qū)е?L失效了呢?之后,我在bashrc文件中,添加庫(kù)路徑,之后,編譯通過(guò)。
2.這個(gè)是今天遇到的問(wèn)題。我編寫(xiě)了一個(gè)makefile。
all : $(TARGET)
.PHONY: all
$(TARGET) : $(SRC)
g++ $(LIB) $(INCLUDE) -o $@ $^ -pthread -lm
.PHONY : clean
clean :
@rm -r $(TARGET)
編譯的時(shí)候,顯示函數(shù)未定義的引用。我仔細(xì)檢查了一下,沒(méi)有錯(cuò)誤。經(jīng)過(guò)反復(fù)驗(yàn)證,是命令行的問(wèn)題。
正確格式:g++ $(INCLUDE) -o $@ $^ -pthread -lm $(LIB)
遇到問(wèn)題,記錄下來(lái),以后研究。不管如何,問(wèn)題解決了。