1. ホーム
  2. linux

[解決済み] インクルードファイルはどこに保存されるか - Ubuntu Linux, GCC

2023-05-28 08:02:18

質問

では、次のようにすると

#include <stdio.h>

#include "myFile.h"

コンパイラ(私の場合はGCC)はstdio.h(そしてオブジェクトファイルさえも)が私のハードドライブのどこにあるか知っています。それは、私が何もしなくても、そのファイルを利用するだけです。

I を考える で、私の Ubuntu Linux マシンでは、ファイルは次の場所に保存されています。 /usr/include/ . コンパイラはこれらのファイルを探す場所をどうやって知るのでしょうか? これは設定可能なのでしょうか、それとも期待されたデフォルトなのでしょうか?この設定をどこで探せばいいのでしょうか?

私はこれらのインクルードファイルについて質問しているので、ファイルのソースは何ですか?Linux コミュニティではあいまいかもしれませんが、誰がこれらを管理するのでしょうか。Windows コンパイラのために同じファイルを提供し、管理するのは誰でしょうか。

私はいつも、彼らは 来る

という印象を抱いていましたが、それは思い込みでした...。

どのように解決するのですか?

こちらをご覧ください。 検索パス

概要を説明します。

#include <stdio.h>

インクルードファイルが括弧内にあるとき、プリプロセッサは最初に -I フラグで指定されたパスを検索します。 次に標準的なインクルードパスを検索します。 -v フラグを使用してください)。

#include "myFile.h"

インクルードファイルが引用符で囲まれている場合、プリプロセッサはまずカレントディレクトリ内を検索し、次に -iquote で指定されたパスを検索し、次に -I のパス、そして標準のパスの順になります。

-nostdinc は、プリプロセッサが標準パスを全く検索しないようにするために使用できます。

環境変数 は、検索パスの追加にも使用できます。

コンパイル時に -v フラグを使用すると、使用された検索パスを見ることができます。