main.c :(。text + 0x170):未定义的引用`sqrt' (使用-lm)

时间:2016-01-20 18:15:57

标签: c makefile

好的,所以我尝试使用makefile编译我的代码,我只有2个.c文件和1个.h文件,我使用" sqrt()" math.h中的函数(仅在main中),这是我的makefile:

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 :(。text + 0x170):未定义引用`sqrt'错误,它可以是什么? (顺便说一句,我之前在GBST专栏中写过-lm并没有帮助,所以我删除了它)

1 个答案:

答案 0 :(得分:8)

您需要在链接行中使用-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