什么是GCC默认包含目录?

当我用gcc编译一个非常简单的源文件时,我不必指定标准包含文件(如stdio或stdlib)的path。

GCC如何知道如何find这些文件?

它里面有硬连线的/usr/includepath吗,还是会得到其他操作系统组件的path?

为了弄清楚gcc / g ++使用的默认path以及它们的优先级,你可以检查以下命令的输出:

  1. 对于C:

     gcc -xc -E -v - 
  2. 对于C ++:

     gcc -xc++ -E -v - 

这个功劳归功于Qt Creator团队。

有一个输出较短的命令,它允许从一行开始,自动地从行中删除包含path:

 $ 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 ++ 的头版 。

这里是一篇描述gccsearchpath的文章: http : //www.network-theory.co.uk/docs/gccintro/gccintro_21.html

另外,您可以使用-I开关指定额外的searchpath。 你可以从命令行或在你的makefile中做到这一点。