我用一些命令编写了一个makefile。运行命令make
后出现错误undefined reference to sqrt
和undefined 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文件代码会出现此错误?请帮帮我..谢谢
答案 0 :(得分:1)
-lm是LDLIB,您将其传递给链接器
CFLAGS = -O
LDLIBS = -lm
CC = gcc
.c .o:
$(CC) $(CFLAGS) $(OBJECTS) -c $<
p1: $(OBJECTS1)
$(CC) $(OBJECTS1) -o $@ $(LDLIBS)
库必须出现在调用命令行中的内容的目标文件之后。