我已经创建了一个makefile来编译和链接我的程序,但是,我无法弄清楚为什么我会收到此错误.是与SDL有关吗?
GCC = gcc CFLAGS = -c -std=c99 -lm -Wall -Wextra -pedantic -O3 -Wfloat-equal -g SDL = -lSDL2 -lSDL2_ttf -lSDL2_image -lSDL2_mixer all: ./game game: global.o display.o player.o entities.o controls.o sound.o menu.o $(GCC) $(CFLAGS) global.o display.o player.o entities.o controls.o sound.o menu.o -o game global.o: global.c $(GCC) $(CFLAGS) $(SDL) global.c display.o: display.c $(GCC) $(CFLAGS) $(SDL) display.c player.o: player.c $(GCC) $(CFLAGS) $(SDL) player.c entities.o: entities.c $(GCC) $(CFLAGS) $(SDL) entities.c controls.o: controls.c $(GCC) $(CFLAGS) $(SDL) controls.c sound.o: sound.c $(GCC) $(CFLAGS) $(SDL) sound.c menu.o: menu.c $(GCC) $(CFLAGS) $(SDL) menu.c clean: rm *o game
user253751.. 7
您的链接命令扩展为:
gcc -c -std=c99 -lm -Wall -Wextra -pedantic -O3 -Wfloat-equal -g global.o display.o player.o entities.o controls.o sound.o menu.o -o game
正如你所看到的那样,里面有-c
旗帜.该-c
标志告诉gcc 不要进行链接.所以它实际上没什么可做的.(.o
文件只能用于链接,并且您已禁用链接,这就是您收到该消息的原因)
您不希望使用相同的标志进行编译和链接.对于你可能想要的编译-c -std=c99 -Wall -Wextra -pedantic -O3 -Wfloat-equal -g
,以及你想要的链接-lm -lSDL2 -lSDL2_ttf -lSDL2_image -lSDL2_mixer -g
.
您的链接命令扩展为:
gcc -c -std=c99 -lm -Wall -Wextra -pedantic -O3 -Wfloat-equal -g global.o display.o player.o entities.o controls.o sound.o menu.o -o game
正如你所看到的那样,里面有-c
旗帜.该-c
标志告诉gcc 不要进行链接.所以它实际上没什么可做的.(.o
文件只能用于链接,并且您已禁用链接,这就是您收到该消息的原因)
您不希望使用相同的标志进行编译和链接.对于你可能想要的编译-c -std=c99 -Wall -Wextra -pedantic -O3 -Wfloat-equal -g
,以及你想要的链接-lm -lSDL2 -lSDL2_ttf -lSDL2_image -lSDL2_mixer -g
.