Makefile 是否可以构建lttng探测器-。。。lttng模块树之外的模块?

Makefile 是否可以构建lttng探测器-。。。lttng模块树之外的模块?,makefile,lttng,Makefile,Lttng,我希望所有源文件都放在一个地方,所以我的目标是在lttng modules目录之外构建lttng probe xxx模块。我已经创建了简单的Makefile,但在编译和下一步中 在尝试加载模块时,我收到一条消息,“lttng_probe_register”和“lttng_probe_unregister”未定义(在编译过程中也是如此) 生成文件: INCLUDES = -I. -I$(LTTNGDIR)/probes -I$(ROOTPWD)/include -I$(KERNELDIR)/inc

我希望所有源文件都放在一个地方,所以我的目标是在lttng modules目录之外构建lttng probe xxx模块。我已经创建了简单的Makefile,但在编译和下一步中 在尝试加载模块时,我收到一条消息,“lttng_probe_register”和“lttng_probe_unregister”未定义(在编译过程中也是如此)

生成文件:

INCLUDES = -I. -I$(LTTNGDIR)/probes -I$(ROOTPWD)/include -I$(KERNELDIR)/include
KBUILD_CFLAGS += -g $(INCLUDES)

all: kernel_modules
obj-m   += lttng-probe-hello.o
PWD     := $(shell pwd)

kernel_modules:
    $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) modules`
KERNELDIR是导出变量,其中是Linux内核的src

LTTNGDIR是导出变量,其中是lttng模块的src

是否可以将这两个从lttng probe.c链接到我的lttng-probe-hello.ko

EXPORT_SYMBOL_GPL(lttng_probe_register);
EXPORT_SYMBOL_GPL(lttng_probe_unregister);

问题是Makefile没有从lttng模块中看到Module.symvers,而只是从Linux内核中看到。为了修复它,我使用了KBUILD\u额外的\u符号

KBUILD_EXTRA_SYMBOLS += "$(LTTNGDIR)/Module.symvers"