web-dev-qa-db-ja.com

GCCのデフォルトのインクルードディレクトリとは何ですか?

Gccを使用して非常に単純なソースファイルをコンパイルする場合、stdioやstdlibなどの標準インクルードファイルへのパスを指定する必要はありません。

GCCはこれらのファイルを見つける方法をどのように知っていますか?

内部に/usr/includeパスが組み込まれていますか、または他のOSコンポーネントからパスを取得しますか?

110
Raxvan

gcc/g++で使用されるデフォルトのパスとそれらの優先度を把握するには、次のコマンドの出力を調べる必要があります。

  1. [〜#〜] c [〜#〜]
    gcc -xc -E -v -
  1. C++の場合:
    gcc -xc++ -E -v -

クレジットはQt Creator teamに送られます。

154

出力が短いコマンドがあります。これにより、行からインクルードパスを1つのスペースで自動的に切り取ることができます。

$ echo | gcc -Wp,-v -x c++ - -fsyntax-only
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/x86_64-redhat-linux
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/backward
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
 /usr/local/include
 /usr/include
End of search list.

クレジットはlibc ++ front-page になります。

31
abyss.7

Gccの検索パスについて説明した記事を次に示します。 http://www.network-theory.co.uk/docs/gccintro/gccintro_21.html

さらに、-Iスイッチを使用して追加の検索パスを指定できます。これは、コマンドラインまたはメイクファイルで実行できます。

1
Jesse Cohen

次のコマンドを実行して、デフォルトの検索パスをリストします。

$(gcc -print-prog-name = cc1)-v

0
Daniele Testa