Make文件中的任何缺失代码

时间:2014-03-09 15:13:42

标签: c compiler-errors gnu-make

我用一些命令编写了一个makefile。运行命令make后出现错误undefined reference to sqrtundefined reference to exp 我的文件:

CFILES = smLe.c iniTra.c le.c res.c uti.c smClass.c   ini.c clas.c 
OBJECTS = smLe.o iniTra.o le.o res.o uti.o smClass.o ini.o clas.o
OBJECTS1 = smLe.o iniTra.o le.o res.o uti.o
OBJECTS2 = smClass.o ini.o clas.o 
CFLAGS = -O -lm
CC = gcc

.c .o:
    $(CC) $(CFLAGS) $(OBJECTS) -c $<

p1: $(OBJECTS1)
    $(CC) $(CFLAGS) $(OBJECTS1) -o $@

p2: $(OBJECTS)
    $(CC) $(CFLAGS) $(OBJECTS2) -o $@

smLe.o: iniTra.h le.h res.h
iniTra.o: iniTra.h
le.o: iniTra.h uti.h le.h
res.o: iniTra.h le.h res.h
smClass.o: ini.h clas.h
ini.o: ini.h clas.h
clas.o: ini.h clas.h 

我的make文件中是否有任何遗漏。为什么这个make文件代码会出现此错误?请帮帮我..谢谢

1 个答案:

答案 0 :(得分:1)

-lm是LDLIB,您将其传递给链接器

CFLAGS = -O 
LDLIBS = -lm
CC = gcc

.c .o:
    $(CC) $(CFLAGS) $(OBJECTS) -c $<

p1: $(OBJECTS1)
    $(CC) $(OBJECTS1) -o $@  $(LDLIBS)

库必须出现在调用命令行中的内容的目标文件之后。