gpt4 book ai didi

c++ - Makefile 错误 - 链接器输入文件未使用

转载 作者:行者123 更新时间:2023-11-30 17:09:49 25 4
gpt4 key购买 nike

我正在尝试运行一个简单的 makefile,如下所示:

T=-ansi -pedantic -Wall -Werror
a.out: test.o extra.o
gcc $(T) -c test.o extra.o

test.o: test.c test.h
gcc $(T) -c test.c

extra.o: extra.c extra.h
gcc $(T) -c extra.c

clean:
rm *.o a.out

但我似乎收到警告,告诉我“链接器输入文件未使用,因为链接未完成”

我尝试在 gcc 之后从 a.out 指令中删除“-c”,但这给我带来了更多问题。我不知道如何从这里开始,任何想法/意见将不胜感激。

编辑:我通过“make -T”运行程序,还从a.out中删除了-c,导致错误“无效符号索引”

最佳答案

您需要从 a.out 命令中删除 -c:

a.out: test.o extra.o
gcc $(T) test.o extra.o

或者更好:

a.out: test.o extra.o
gcc $(T) -o $@ test.o extra.o

或者,更好的是:

extra: test.o extra.o
gcc $(T) -o $@ test.o extra.o

错误消息通常是因为您在命令行上使用 -c 指定了类似 -lm 的内容,但您在这里没有这样做。 OTOH,您正在使用 -c 选项列出目标文件 - 这将生成警告:

gcc -ansi -pedantic -Wall -Werror -c test.o extra.o
^ this one, here

那些 .o 文件是链接器输入,但您没有链接。删除-c,您将生成a.out。应该可以正常进行。

我认为这是我第一次看到用于构建 a.out 的 makefile。这是极其不寻常的——并不是完全错误,但绝对不是你通常使用 make 的方式。它具有从单个源文件构建程序的内置规则,例如来自 example.cexample。通常,您根据源文件之一为程序指定一个有意义的名称。请注意,创建程序测试通常是一个坏主意;典型的 shell 中内置了一个标准的 test 命令,并且困惑很严重。

关于c++ - Makefile 错误 - 链接器输入文件未使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137876/

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