私は Linux プロジェクトに取り組んでいます。カーネルとユーザー空間の両方に共通するコード (具体的には構造体) とヘッダー ファイル (独自の実装) を用意したいと考えています。これを実装する方法を教えていただけますか?
答え1
簡単な答えは、プロジェクトの両方の(別々にコンパイルされた)部分にヘッダーを含めることです。これは好きなように行うことができます。明らかなディレクトリ階層は次のようになります。
project/
userspace_stuff/
kernal_stuff/
inc/
project_namespace/
はinc/project_namespace
オプションです。ヘッダーをトップレベルに配置し、2 つのサブディレクトリのソース ファイルで使用することもできます。個人的には、インクルードで相対パスを使用すると煩雑になる可能性があるため、ディレクトリと絶対パス ( )#include "../myheader.h"
を使用することをお勧めします。これは、トップレベルの makefile を次のように構成することで実現できます。inc
#include <project_namespace/myheader.h>
INC = -Iinc
CFLAGS += $(INC)