Kbuild - 包括来自外部目录的源文件

时间:2013-03-04 16:01:05

标签: linux makefile kbuild

我有一些源代码,我想用于内核模块和用户空间程序。我只想在源代码树中维护该代码的单个副本。我正在考虑将共享源文件放在共享文件夹中(在内核树之外),让kbuild从外部目录构建这些文件,并在模块目录中生成.o文件。有没有一种很好的方法可以使用kbuild包含来自外部目录的源文件?

我的目标目录如下所示:

+ linux
| + drivers
|   + foo
|     + Makefile
|     + foomain.c
|     + foomain.o
|     + shared.o
+ shared
| + shared.c
+ bar
  + Makefile
  + barmain.c
  + barmain.o
  + shared.o

虽然可以将shared.c复制到foo目录中作为构建过程的一部分,但它似乎是一个丑陋的解决方案,我想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

我认为这是可能的。

在共享目录下创建一个Makefile,它可以支持为内核模块foo和shared.o构建用户空间应用程序栏的shared.o。

这意味着在Makefile中创建两个不同的构建目标,这两个目标可以具有相同的名称,但需要使用诸如KERNEL_BUILD之类的宏来区分它们。