这是一个无法链接.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
链接成功。
答案 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
会重建。