1.make后报错
2.通过参考http://blog.sina.com.cn/s/blog_87c063060101ativ.html博客最终找出自己的错误
1)之前的maleficent文件
OBJS = add/add_int.o add/add_float.o sub/sub_int.o sub/sub_float.o main.o
CFLAGS = -Iadd -Isub -O2
TARGET = cacu
RM = rm -rf
CC = gcc
$(TARGET):$(OBJS)$(CC) -c -o $(TARGET) $(OBJS) $(CFLAGS)
$(OBJS):%.o:%.c
$(CC) -c $(CFLAGS) $< -o $@
clean:
-$(RM) $(TARGET) $(OBJS)
2)删除“-c”选项问题就可以解决或者把OBJS = add/add_int.o add/add_float.o sub/sub_int.o sub/sub_float.o main.o改为OBJS = add/add_int.c add/add_float.c sub/sub_int.c sub/sub_float.c main.c 然后去掉:
$(OBJS):%.o:%.c $(CC) -c $(CFLAGS) $< -o $@ 以及clean里面的”$(OBJS),以避免删除源文件,同时该方法不生成二进制文件,只生成可执行文件。不适合初学者的我们观测编译的过程。
总结:问题的原因是由于缺少linux编程经验,"-c"选项用来生成“.o”文件,即生成目标文件。而此处通过目标文件生成可执行文件,所以不可以使用“-c"选项。
注:红色标记为错误的地方。