gpt4 book ai didi

c - 生成文件错误:No rule to m ake target

转载 作者:行者123 更新时间:2023-11-30 17:37:56 24 4
gpt4 key购买 nike

我是编写 makefile 的新手,并且已经在 stackoverflow 上解决了有关同一主题的其他几个问题,但无法运行我的代码。

我正在编写 makefile 以在启动时编译单个 .C 文件。

 CORE_DIR = ../..
CODE_DIR = $(CORE_DIR)/code

CC=gcc

all: example.o

example.o: $(CODE_DIR)/example.c $(CODE_DIR)/variable.h
$(CC) $(CODE_DIR)/example.c -o output

我正在执行命令:make -f start.mk 并收到错误:没有规则为“start.mk”创建目标。

我哪里错了?

编辑:使用 make -d start.mk(调试选项) 并更改 all:output 如评论中所述..这是我收到的更多文本,但我无法复制。尝试使用词干的模式规则linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.c'。 尝试使用词干的模式规则linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.cc'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.C'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.cpp'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.p'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.f'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.F'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.r'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.s'。 尝试使用词干的模式规则linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.S'。 尝试使用词干的模式规则 linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.mod'。 尝试使用词干的模式规则 linux.mk'.
Trying implicit prerequisite
linux.mk.sh'。 寻找带有中间文件的规则linux.mk.sh'.
Avoiding implicit rule recursion.
Trying pattern rule with stem
linux.mk.sh'。 尝试隐式先决条件linux.mk.sh,v'.
Trying pattern rule with stem
linux.mk.sh'。 尝试隐式先决条件RCS/linux.mk.sh,v'.
Trying pattern rule with stem
linux.mk.sh'。 尝试隐式先决条件RCS/linux.mk.sh'.
Trying pattern rule with stem
linux.mk.sh'。 尝试隐式先决条件s.linux.mk.sh'.
Trying pattern rule with stem
linux.mk.sh'。 尝试隐式先决条件SCCS/s.linux.mk.sh'.
No implicit rule found for
linux.mk'。 完成目标文件的先决条件linux.mk'.
No need to remake target
linux.mk'。make:不对“linux.mk”执行任何操作。

最佳答案

请尝试这个:

CORE_DIR = ../..
CODE_DIR = $(CORE_DIR)/code

CC=gcc

all: example.o
$(CC) -o output $<

example.o: $(CODE_DIR)/example.c $(CODE_DIR)/variable.h
$(CC) -c $<

如何使用它:

  1. 将这些行放入名为 Makefile 的文件中,并在与此 Makefile 相同的目录中以 make 方式调用 make
  2. 或者将这些行放入您喜欢的名称的文件中,例如 start.mk,但在同一目录中调用 make 作为 make -f start.mk如这个start.mk

注意:makefile 中的每条规则都用制表符缩进,而不是一些空格。在这种情况下,在每个 $(CC) .. 行之前应该有且只能有一个 TAB。

<小时/>

“没有规则来生成目标”错误意味着您要求 make 根据 Makefile 给出的规则更新目标,但更新该目标所需的规则不存在。这通常意味着您在命令行中给出了错误的目标名称。

例如,如果您正在使用上面的Makefile,但通过以下命令调用make:make output,因为没有规则说明如何更新或生成outputmake 会给你那个无规则错误。

关于c - 生成文件错误:No rule to m ake target,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249023/

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