2016-01-20 61 views
1

好吧,所以我試圖使用makefile編譯我的代碼,我只有2個.c文件和1個.h文件中,我用 「的sqrt()」 從文件math.h(僅在主)功能,這是我的makefile:main.c :(。text + 0x170):未定義引用`sqrt'(已使用-lm)

a.out: GBST.o main.o 
     gcc GBST.o main.o 

GBST.o: GBST.c GBST.h 
     gcc -c GBST.c 

main.o: main.c 
     gcc -c main.c -lm 

的是,我得到的main.c :(文字+量0x170):未定義引用`sqrt'錯誤,它可能是什麼? (順便說一句,我寫在GBST行-lm之前,它並沒有幫助,所以我刪除了它)

+2

這是什麼[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve),顯示你在做什麼? –

+0

您是否包含math.h? –

+0

謝謝你user3121023,它實際上工作! –

回答

7

您需要在鏈接行中使用-lm,而不是在編譯行中。

a.out: GBST.o main.o 
     gcc GBST.o main.o -lm 
#       ^^^^ Need it here 

GBST.o: GBST.c GBST.h 
     gcc -c GBST.c 

main.o: main.c 
     gcc -c main.c 
#      ^^^^ Don't need it here 
相關問題