这是一个makefile,无法链接.o文件以生成可执行文件。
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
链接成功。
最佳答案
这里有两个问题:
首先,在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
。关于c - Makefile失败并显示警告消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31897327/