gpt4 book ai didi

c - 目标 'all' 的配方在 Ubuntu 15.10 64 位上失败

转载 作者:太空狗 更新时间:2023-10-29 12:01:17 26 4
gpt4 key购买 nike

1) 如果我通过 gcc -o file1 file1.c && gcc file2.c -lm -o file2 在终端上键入每个命令,程序工作很好,然后./file1 someArgs ./file2 someArgs

2) 如果我在终端输入:make rst 和 make res

有效

3) 不工作在终端中输入make

生成文件:

all:
check

default:
check

clean:
rm -rf file1 file2

rst:
gcc -o file1 file1.c && gcc file2.c -lm -o file2

res:
./file1 someArgs ./file2 someArgs

check:
make clean
make rst
make res

还试过:

all:
check

default:
check

clean:
rm -rf file1 file2

rst:
gcc -o file1 file1.c && gcc file2.c -lm -o file2

res:
./file1 someArgs ./file2 someArgs

check:
clean
rst
res

以及一些其他有或没有make 的组合。都是同样的错误:

make: check: Command not found
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 127

最佳答案

您似乎混淆了 make 规则的先决条件及其配方。先决条件与目标名称在同一行;食谱位于下一个制表符缩进的一行或多行。因此,例如,这条规则......

all:
check

...表示目标“all”没有先决条件(因此它总是被认为是过时的),构建它的方法是运行一个命令 check。您实际上想要的是构建名为“check”的目标,您可以通过将“check”作为“all”的先决条件来实现:

all: check

更一般地说,您似乎正在接近 makefile,就好像它是一个具有多个入口点的程序,但最好将其视为一组 make 可以用来 build 东西。因此,对于实际构建文件的规则来说,将构建的文件指定为目标是常规且可取的。此外,要使用 make 的全部功能,您应该为这些规则和其他规则表达适当的先决条件。例如:

./file1: file1.c
gcc -o file1 file1.c

./file2: file2.c
gcc file2.c -lm -o file2

res: ./file1 ./file2
./file1 someArgs ./file2 someArgs

如果你正确地做到了这一点,那么你就不需要每次都删除和重建程序这样的黑客攻击——make 会判断它们是否过时,如果和当它需要做的时候。

关于c - 目标 'all' 的配方在 Ubuntu 15.10 64 位上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35233128/

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