一个模块包含多目录和源文件,Makefile写法

假设这样一种情况,一个内核模块有多个目录多个源文件组成,编译成模块是Makefile如何编写呢?

我这边测试通过的一种方法介绍一下。假设该模块的组成方式如下:

module--> a.c
           |
           -->b/
                |
                -->b1.c
                -->b2.c


也就是该模块源代码由a.c和目录b中的源文件b1.c和b2.c组成。

如果编译这个模块的话,Makefile关键部分如下:

     obj-m += tesmodule.o
     tesmodule-y += a.o
     tesmodule-y += b/b1.o
     tesmodule-y += b/b2.o


这样的组织方式可以将所有源文件编译到testmodule.o中,并生成模块文件。但是如果目录比较多,而且可能还有多级子目录的话呢,这种方式就有局限性了,不可能一一类出所有文件名的。

记得内核源码的Makefile中是可以指定目录,并进入目录编译的,诸如下面这种形式:

     obj-m += tesmodule.o
     testmodule-objs := a.o b/


但是Makefile回报错误,说b不是文件,而是目录。

各位朋友帮忙分析一下

原文地址:https://www.cnblogs.com/skyofbitbit/p/3680790.html