gpt4 book ai didi

makefile - 使 [1] : ***/lib/modules//build/: No such file or directory. 停止

转载 作者:行者123 更新时间:2023-12-05 06:13:11 26 4
gpt4 key购买 nike

我正在使用 Makefile

ARCH linux 发行版 上编译内核模块 thermal.c

生成文件:

obj-m += thermal.o

all:
make -C /lib/modules/$(uname -r)/build/ M=$(PWD) modules

clean:
make -C /lib/modules/$(uname -r)/build/ M=$(PWD) clean

make 命令的输出是:

make -C /lib/modules//build/ M=/home/user/dir modules
make[1]: *** /lib/modules//build/: No such file or directory. Stop.
make: *** [Makefile:4: all] Error 2

uname -r 输出:5.6.8-arch1-1

最佳答案

make 在将配方传递给 shell 之前对其进行扩展。在您的情况下,将 $(PWD) 替换为名为 PWD 的 make 变量的值(正确),但它也替换了 $(uname -r) 通过名为 uname -r 的 make 变量的值。由于没有定义这样的 make 变量,结果是空字符串。使用 $$(uname -r) 解决了这个问题,因为 make 将它扩展为 $(uname -r),正是您想要传递给 shell 的内容。

总而言之,您必须将要保留的 $ 加倍以从 make 扩展中转义:

all:
make -C /lib/modules/$$(uname -r)/build/ M=$(PWD) modules

clean:
make -C /lib/modules/$$(uname -r)/build/ M=$(PWD) clean

关于makefile - 使 [1] : ***/lib/modules//build/: No such file or directory. 停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63388413/

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