g++コンパイル時のシステムヘッダファイルの検索パスを見つけるには

2037 ワード

システムヘッダファイルの内容を参照して、ヘッダファイルにどのような関数とタイプがあるかを知る必要がある場合がありますが、これらのシステムヘッダファイルがあるファイルディレクトリをどのように見つけますか?簡単なc++プログラムを書くことで、g++がどのようにシステムヘッダファイルを検索しているかを観察することができます.
たとえば、次のプログラムがあります.
#include // This is a non-existant system header

int main ( int argc, char* argv[] )
{
    return 0;
}

ファイル「nonexist.h」は<>で囲まれているため、g++はそのファイルを検索する際にシステムヘッダファイルがあるディレクトリを検索し、これはまた存在しないファイルであるため、g++は検索可能なすべてのファイルディレクトリを検索し、最後にコンパイル通知はそのファイルが見つからなかった:
gcc version 4.7.2 (Debian 4.7.2-5) 
COLLECT_GCC_OPTIONS='-v' '-c' '-shared-libgcc' '-mtune=generic' '-march=i586'
 /usr/lib/gcc/i486-linux-gnu/4.7/cc1plus -quiet -v -imultiarch i386-linux-gnu -D_GNU_SOURCE test_open.cpp -quiet -dumpbase test_open.cpp -mtune=generic -march=i586 -auxbase test_open -version -o /tmp/ccQHsJ9S.s
GNU C++ (Debian 4.7.2-5) version 4.7.2 (i486-linux-gnu)
        compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64350
ignoring nonexistent directory "/usr/local/include/i386-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.7/../../../../i486-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/i486-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/i486-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.7/include-fixed
 /usr/include/i386-linux-gnu
 /usr/include
End of search list.
GNU C++ (Debian 4.7.2-5) version 4.7.2 (i486-linux-gnu)
        compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64350
Compiler executable checksum: 62bfd556e00a93e3d7f66f6876d73826
test_open.cpp:1:22: fatal error: nonexist.h: No such file or directory
compilation terminated.