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