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

时间:2018-02-05 17:13:47

标签: linux makefile linux-kernel macros kernel-module

我想使用IContributorHandle wkspOwnerhandle = (IContributorHandle)data.getSourceWorkspace().getOwner(); IItem contributerHandle = itemService.fetchItem(wkspOwnerhandle, null); IContributor userid = (IContributor) contributerHandle.getFullState(); String userName = userid.getName(); 标志为我的内核模块定义一个宏,但我无法弄清楚如何在自定义可加载内核模块中执行此操作。

为了清楚起见,要将宏TEST设置为1,我通常会这样做:
-D

在file.c里面我有

cc -D TEST=1 file.c -o file

现在,在内核模块中使用相同的代码,如何在不触及代码的情况下将TEST设置为1?

这是我的Makefile:

#if TEST
   //do something
#endif

由于all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 标志递归调用多个makefile,添加-C不起作用,我收到以下错误: -D TEST=1

有谁知道如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如@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