make [1]:*** / lib / modules // build /:没有这样的文件或目录停止

问题描述

我正在使用 Makefile

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

Makefile:

db.collection.find().forEach(function(doc) { 
doc.field.subfield.time=new ISODate(doc.field.subfield.time);
db.collection.save(doc); 
})

make命令的输出为:

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 -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 输出: 5.6.8-arch1-1

解决方法

make在将配方传递到外壳之前将其展开。在您的情况下,make用名为$(PWD)的make变量的值替换PWD(正确),但它也用名为$(uname -r)的make变量的值替换了uname -r。由于未定义此类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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...