当前位置:  开发笔记 > 编程语言 > 正文

什么"链接器输入文件未使用,因为链接未完成"是什么意思?(C makefile)

如何解决《什么"链接器输入文件未使用,因为链接未完成"是什么意思?(Cmakefile)》经验,为你挑选了1个好方法。

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



1> user253751..:

您的链接命令扩展为:

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.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有