Linuxの「sys / ioctl.h」ヘッダー


8

私はついています Linux 2.6.32-26-generic

「ioctl.h」ヒアラーファイルのLinuxソースコードを見ると、多くの亜種が見つかりました。(異なるプラットフォームでは、私は推測します)。すなわち

./fs/ocfs2/ioctl.h
./fs/btrfs/ioctl.h
./fs/ceph/ioctl.h
./include/config/i2o/config/old/ioctl.h
./include/asm-generic/ioctl.h
./include/linux/hdlc/ioctl.h
./include/linux/ioctl.h
./drivers/video/via/ioctl.h
./drivers/staging/vt6655/ioctl.h
./drivers/staging/vt6656/ioctl.h
./arch/ia64/include/asm/ioctl.h
./arch/h8300/include/asm/ioctl.h
./arch/microblaze/include/asm/ioctl.h
./arch/score/include/asm/ioctl.h
./arch/avr32/include/asm/ioctl.h
./arch/alpha/include/asm/ioctl.h
./arch/x86/include/asm/ioctl.h
./arch/m32r/include/asm/ioctl.h
./arch/mn10300/include/asm/ioctl.h
./arch/sparc/include/asm/ioctl.h
./arch/powerpc/include/asm/ioctl.h
./arch/m68k/include/asm/ioctl.h
./arch/sh/include/asm/ioctl.h
./arch/xtensa/include/asm/ioctl.h
./arch/mips/include/asm/ioctl.h
./arch/s390/include/asm/ioctl.h
./arch/arm/include/asm/ioctl.h
./arch/blackfin/include/asm/ioctl.h
./arch/frv/include/asm/ioctl.h
./arch/parisc/include/asm/ioctl.h
./arch/cris/include/asm/ioctl.h

しかし、私はそのファイルが含まれているのを見る #include <sys/ioctl.h>

このマッピングはどのように機能しますか?


これはより適切ですstackoverflowか?
ハリ

回答:


5

ファイルが含まれていると思います/usr/include/sys/ioctl.h(/ usr / src / linuxなどからではありません)。私のシステムでは、カーネルやカーネルヘッダーではなく、glibcに属しています。

実際、カーネルソースには何も含まれていません。/usr/src/linux(など)内のヘッダーは、カーネルのコンパイルにのみ使用されています。いくつかのソフトウェアは、いくつかのカーネルヘッダをコンパイルする必要がある場合には、中のものを使用しています/usr/include/linux(といくつかの他)、通常のようなパッケージの一部ですkernel-headerslinux-headers


3

インクルードファイルのデフォルトの検索パスはです/usr/include。これはCコンパイラのプロパティであり、理論的には異なるコンパイラが異なるパスを使用する可能性がありますが、実際にはすべて/usr/include(および他のいくつかのコンパイラ依存の場所)を調べます。

#include <sys/ioctl.h>sys/ioctl.hしたがって、インクルードパスのエントリに対して相対的に呼び出されるファイルを検索することを意味します/usr/include/sys/ioctl.h

カーネルモジュール(またはカーネル自体)をコンパイルしない限り、カーネルソースのヘッダーは関係ありません。ユーザーランドプログラムのヘッダーは、CライブラリまたはCコンパイラに付属しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.