makefile报错:linker input file unused bacause linking not done

1.make后报错

makefile报错:linker input file unused bacause linking not done_第1张图片

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"选项。

注:红色标记为错误的地方。

你可能感兴趣的:(Linux,c++)