Makefile失败并显示警告消息

时间:2015-08-08 18:43:57

标签: c makefile

这是一个无法链接.o文件以使其可执行的makefile。

enter code here
CC = c99
CFLAGS = -g -Wall -Wextra -O0
OBJECTS = main.o getoptions.o
P = testprog

$(P): $(OBJECTS)
    $(CC) $(OBJECTS) -o $(P)

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

getoptions.o : getoptions.c getoptions.h
    $(CC) $(CFLAGS) -c getoptions.o

我收到了这个警告:

gcc: warning: getoptions.o: linker input file unused because linking not done

当我手动使用时:

c99 *.o -o testprog

链接成功。

1 个答案:

答案 0 :(得分:0)

这里有两个问题:

首先,在getoptions.o的目标中,您为getoptions.o选项传递了-c。您应该为其提供源文件getoptions.c

的值

其次,摆脱$(OBJECTS)目标中的main.o。您不需要为此步骤传入目标文件。

通过这些修复,您将获得成功的编译:

c99 -g -Wall -Wextra -O0 -c main.c
c99 -g -Wall -Wextra -O0 -c getoptions.c
c99 main.o getoptions.o -o testprog

编辑:

main.o的目标行应为:

main.o : main.c getoptions.h

这样,如果getoptions.h发生变化,main.o会重建。