2016-03-30 11 views
1

Linuxカーネルのヘッ​​ダを含むLinuxユーザ空間プログラムをビルドする必要があります。しかし、これらのヘッダーは順番に他のヘッダーなどを使用するように見えます。だから私の質問は、私は自分のMakefileに必要な可能性のあるディレクトリをすべて含めるための適切な/良い方法は何ですか?ありがとうございました。Linuxユーザ空間プログラム用の適切なビルド環境

答えて

1

Linuxカーネルヘッダーを使用するほとんどのユーザー空間プログラムは、特別な操作を行う必要はありません。 linux/はデフォルトのインクルードパスに既に含まれています。 #include <linux/netlink.h>。ディストリビューションには、これらのファイルがstanh> dardデベロッパーパッケージの一部として含まれています(例えば、Debianのbuild-essential)。

カーネルモジュールをビルドするときに必要なカーネルバージョン固有のヘッダーを取得することもできますが、ユーザー空間プログラムは通常ソケットとパイプとのみ対話するため、これらのチャネルの構造定義やプロトコルヘルパーが必要です例、Netlink)。

+0

私はLinuxカーネルプログラミングの基礎を学んでおり、モジュールを構築しています。今私は、私が/ dev/mem /と/ proc /のカスタムファイルとやりとりする "ユーザスペースデバイスドライバ"と呼ばれるものを構築しようとしています。私は、いくつかのプリプロセッサの変数と、アーキテクチャのページテーブルヘッダのいくつかに定義されている構造体にアクセスしたいと思います。そのような状況に対して、あなたのお勧めは何ですか?再度、感謝します。 – Tyler

+0

私のお勧めは、同じことをする既存のプログラムを見て、彼らが何をしているのかを見ることです。残念ながら、私はアーキテクチャー固有のユーザー・ドライバーを一度も実行していません。ルーティング、ファイルシステム、アカウンティングのみです。 –

+0

もう少し詳しく見ていきます。一般的に言えば、コード抜粋がありますが、Makefileは付いていません。 – Tyler

関連する問題