我有一些源代码,我想用于内核模块和用户空间程序。我只想在源代码树中维护该代码的单个副本。我正在考虑将共享源文件放在共享文件夹中(在内核树之外),让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目录中作为构建过程的一部分,但它似乎是一个丑陋的解决方案,我想知道是否有更好的方法。
答案 0 :(得分:0)
我认为这是可能的。
在共享目录下创建一个Makefile,它可以支持为内核模块foo和shared.o构建用户空间应用程序栏的shared.o。
这意味着在Makefile中创建两个不同的构建目标,这两个目标可以具有相同的名称,但需要使用诸如KERNEL_BUILD之类的宏来区分它们。