是否可以在lttng-modules树之外构建lttng-probe -...模块?

时间:2015-01-14 18:54:58

标签: makefile lttng

我想将所有源文件放在一个地方,所以我的目标是在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-modules的src。

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

EXPORT_SYMBOL_GPL(lttng_probe_register);
EXPORT_SYMBOL_GPL(lttng_probe_unregister);

1 个答案:

答案 0 :(得分:0)

问题是Makefile没有看到来自lttng-modules的Module.symvers,只来自Linux内核。为了解决这个问题,我使用了KBUILD_EXTRA_SYMBOLS。

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