カーネルとユーザー空間の共通コード

カーネルとユーザー空間の共通コード

私はLinuxプロジェクトを進めています。カーネルとユーザー空間の両方に共通するいくつかのコード(特に構造体)とヘッダファイル(直接実装)が必要です。誰かがこれを実装する方法を教えてもらえますか?

ベストアンサー1

簡単な答えは、プロジェクトの2つの部分(別々にコンパイルされた)にヘッダーを含めることです。必要に応じてこれを行うことができます。明確なディレクトリ階層は次のとおりです。

project/
    userspace_stuff/
    kernal_stuff/
    inc/
       project_namespace/

これはinc/project_namespaceオプションです。ヘッダーを最上位レベルに簡単に配置し、両方のサブ#include "../myheader.h"ディレクトリのソースファイルで使用できます。個人的には、インクルードに相対パスを使用すると混乱する可能性があることがわかりました。だから私はincディレクトリと絶対パス()を持ちたいと思います#include <project_namespace/myheader.h>。これは、次のように最上位レベルのメイクファイルを構成することによって容易になります。

INC = -Iinc
CFLAGS += $(INC)

おすすめ記事