Linuxのヘッダファイルに関する世界観です。
/usr/includeには、システムのC言語用のヘッダファイルが置かれる。
たとえば、Cのプログラムコードに必ずといって出てくる
#include <stdio.h>
のstdio.hが存在するディレクトリがここ。
標準入出力関数のヘッダファイルは/usr/include/stdio.hに存在する。
C言語で任意のライブラリ関数のAPIを使ったプログラムを自分で書いてコンパイルするためには、関数のプロトタイプ宣言が書かれたヘッダファイルをインクルードしなければならない。
/usr/includeディレクトリが存在しなければ、Cの標準ライブラリ関数や、あるいはどんなライブラリ関数を使ったプログラムも、コンパイルして使うことはできない。
ただし、gccに-Iオプションをつけてコンパイルすると、/usr/include以外のディレクトリを検索対象に追加できる。
また、
#include "hoge.h"
のようにダブルクオーテーションでヘッダファイルを囲った場合は、/usr/includeでなくプログラムと同じディレクトリからヘッダファイルをインクルードできる)。
だが、一度コンパイルしたバイナリを動かすためには、ヘッダファイルは必要ない。その代わり、ビルドされた共有ライブラリが必要になる。
2024.10.06編集
-develと名前のついたライブラリのパッケージをインストールすると、/usr/includeにヘッダファイルが展開される。
ほかにもREADMEなど開発向けドキュメントやサンプルプログラムなどがインストールされることもある。
これは、自分でそのライブラリのAPIを使ったプログラムを書いたり、そのライブラリAPIを使ったプログラムをソースコードから「ビルドするために必要」だが、単にそのライブラリを使ったプログラムを「実行するためには必要ない」。
Linuxのカーネルヘッダーも/usr/include以下にインストールされる。
Linux共有ライブラリを参照のこと。
GNUツールチェインも参照のこと。
libcやLinux API(stdio)を参照のこと。
Linuxカーネル(ソースコード・カーネルモジュール)を参照のこと。