【发布时间】:2017-01-07 09:20:04
【问题描述】:
让generate_testapi.py 成为我的 Linux 内核模块源代码树中的一个脚本,它摄取 mymod_test.h 并生成一个面向用户空间的接口源文件(ioctl、debugfs,你可以命名它),并让我们将其命名为 $(obj)/mymod_test_interfaces.gen.c。
在 Kbuild makefile 中,让 mymod-y 成为包含构成模块的目标文件列表的变量,即
Kbuild-ish 规则是什么样子的,它将从生成源编译的目标文件添加为 mymod 的依赖项并描述生成过程。
以下,我对这样一个规则集的第一次天真尝试不起作用。
obj-m := mymod.o
mymod-y := \
mymod_kmod.o \
$(obj)/mymod_test_interfaces.gen.o
$(obj)/mymod_test_interfaces.gen.o: $(src)/mymod_test.h $(src)/generate_testapi.py
$(src)/generate_testapi.py < $(src)/mymod_test.h > $<
尝试make,结果错误是,没有规则可以制定mymod_test_interfaces.gen.o。
更新(由于 Alexandre Belloni 的评论)
是的,我也尝试了表单的生成器规则
$(obj)/mymod_test_interfaces.gen.c: $(src)/mymod_test.h $(src)/generate_testapi.py
$(src)/generate_testapi.py < $(src)/mymod_test.h > $<
同样的结果,就是它不起作用。
【问题讨论】:
-
第二个 mymod_test_interfaces.gen.o 不应该是 mymod_test_interfaces.gen.c 吗?
-
@AlexandreBelloni:这就是我想要找出的。很好的评论,但当然我也试过了,不,它没有给出想要的结果。
标签: linux-kernel kbuild