gpt4 book ai didi

linux - 在内核模块中预定义一个宏

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:53 25 4
gpt4 key购买 nike

我想使用 -D 标志为我的内核模块定义一个宏,但我不知道如何在自定义可加载内核模块中执行此操作。

为了清楚起见,要将宏 TEST 设置为 1,我通常会这样做:
cc -D TEST=1 file.c -o 文件

在 file.c 里面我有

#if TEST
//do something
#endif

现在,在内核模块中有相同的代码,如何在不修改代码的情况下将 TEST 设置为 1?

这是我的 Makefile:

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

由于 -C 标志递归调用多个 makefile,添加 -D TEST=1 不起作用,我收到以下错误:make:无效选项 -- 'D'

有人知道怎么解决这个问题吗?

提前致谢。

最佳答案

正如@n.m 所建议的。在评论中,解决方案是使用EXTRA_CFLAGS
所以在我的例子中它会是这样的:

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

或简单地

EXTRA_CFLAGS:= -D TEST=2

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

关于linux - 在内核模块中预定义一个宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48627940/

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