gpt4 book ai didi

c - "linker input file unused because linking not done"是什么意思? (C 生成文件)

转载 作者:太空狗 更新时间:2023-10-29 14:53:57 25 4
gpt4 key购买 nike

我已经创建了一个 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

最佳答案

您的链接命令扩展为:

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.

关于c - "linker input file unused because linking not done"是什么意思? (C 生成文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com