linux/kernel.hファイルはどこにありますか?

linux/kernel.hファイルはどこにありますか?

私はSalzmanの「Linuxカーネルモジュールプログラミングガイド」を読んでいますが、linux / kernel.hファイルの場所を知りたいです。見つかりませんfind。または、私が見つけたファイルprintkに優先順位マクロがありません。

答え1

linux/kernel.hモジュールの構築に使用されるヘッダーは次のとおりです。カーネルソースコードの一部。カーネルソースツリーからモジュールを構築するときに使用されるバージョン。

外部モジュールビルドの場合、ビルドプロセスはから始まります/lib/modules/$(uname -r)/build/include/linux/sched.h。このファイルはカーネルヘッダパッケージで提供されます。例えばDebian 派生製品ではこのlinux-headers-$(uname -r)パッケージです。

カーネルモジュールではなく、ユーザープロセスで動作/usr/include/linux/kernel.hします。

優先順位printkマクロは現在linux/printk.hそしてlinux/kern_levels.h。読んでいると思います。オリジナルガイド、最新のカーネルでは、2.6カーネルシリーズに基づいています。更新されたガイド(現在使用中5.6.7)。

答え2

私のMint 18.xシステムでbuild-essential完全なソースツリーがインストールされていない場合 -

user@localhost:~ $ locate kernel.h | grep \/kernel.h$
/usr/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-21/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-21/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.4.0-21-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.4.0-21-generic/include/config/firmware/in/kernel.h
/usr/src/linux-headers-4.4.0-53/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-53/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.4.0-53-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.4.0-53-generic/include/config/firmware/in/kernel.h
/usr/src/linux-headers-4.8.0-53/include/linux/kernel.h
/usr/src/linux-headers-4.8.0-53/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.8.0-53-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.8.0-53-generic/include/config/firmware/in/kernel.h

あなたの質問に対するジェフの意見に基づいて、私の考えでは最大時間が/usr/include/linux/kernel.h使用されます。

カーネルツリーのタルボールを抽出した場合は、そのディレクトリ構造に別のコピーがある可能性があります。クイックチェックにより、サイズがすべて異なるか空のファイルであることがわかります。

答え3

この質問に対する答えは、Linuxディストリビューションによって大きく変わる可能性があります。 SUSE/SLES vs RHEL/Centos/Fedora vs debian vs mintなど

LinuxディストリビューションとDebian RPMのバージョンによって異なりますか?

とにかく私の経験はほとんどSLESバージョン11.4で行われましたが、これは私が保証できるものです。

/usr/src/linux/include/linux/kernel.h

where for me   /usr/src/linux -> /usr/src/linux-3.0.101-108.21

uname -r    for me returns 3.0.101-108.21-default

カーネルを最新バージョンに更新すると、ソフトリンクは kernel.h とともにそれに応じて変更されます。お探しの方は、こう言うのが安全だと思います。カーネルモジュールそのバージョンは、kernel.h以下に関連するいくつかのフォルダにあり、uname -rその一部になります。カーネルソースコードLinuxディストリビューション用のパッケージ。

関連情報