【问题标题】:gcc, makefile does not link correctlygcc,makefile 没有正确链接
【发布时间】:2023-03-30 21:08:01
【问题描述】:

我有这个makefile:

CC=gcc
CFLAGS= -c -Wall -std=c99 -ggdb

all: plan

plan: plan.o graph.o
    $(CC) $(CFLAGS) plan.o graph.o -o plan

plan.o: plan.c graph.h
    $(CC) $(CFLAGS) plan.c

graph.o: graph.c graph.h
    $(CC) $(CFLAGS) graph.c

run: all
    ./plan

当我运行 make 时,gcc 给我消息“链接器输入文件未使用,因为链接未完成”,这是什么意思?

【问题讨论】:

    标签: gcc makefile


    【解决方案1】:

    -c 选项表示:

    编译或汇编源文件,但不要链接。链接阶段根本没有完成。最终的输出是每个源文件的目标文件的形式。

    在构建时不应使用该选项。

    gcc man

    更新

    对于 plan 目标,不要使用 CFLAGS:

    plan: plan.o graph.o
        $(CC) -Wall -std=c99 -ggdb plan.o graph.o -o plan
    

    【讨论】:

    • 那么,我应该简单地从 CFLAGS 中删除 -c 标志,它会起作用吗?
    • 并非如此。你需要-c 来编译你的.c 文件。在构建 plan 目标时,您只是不需要此选项。我现在会更新答案..
    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2016-12-29
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多