0

カーネル モジュールとユーザー空間プログラムの両方で使用したいソース コードがあります。ソース ツリー内にそのコードのコピーを 1 つだけ保持したいと考えています。共有ソース ファイルを共有フォルダー (カーネル ツリーの外部) に置き、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 ディレクトリにコピーすることは可能ですが、それは醜い解決策のように思えます。より良い方法があるかどうか疑問に思っています。

4

1 に答える 1

0

可能だと思います。

カーネル モジュール foo の shared.o とユーザー空間アプリケーション bar の shared.o のビルドをサポートできる共有ディレクトリの下に Makefile を作成します。

これは、Makefile で 2 つの異なるビルド ターゲットを作成することを意味します。2 つのターゲットは同じ名前を持つことができますが、それらを区別するには KERNEL_BUILD などのマクロを使用する必要があります。

于 2013-03-05T03:12:42.807 に答える