什么是GCC默认包含目录?
当我用gcc编译一个非常简单的源文件时,我不必指定标准包含文件(如stdio或stdlib)的path。
GCC如何知道如何find这些文件?
它里面有硬连线的/usr/include
path吗,还是会得到其他操作系统组件的path?
为了弄清楚gcc / g ++使用的默认path以及它们的优先级,你可以检查以下命令的输出:
-
对于C:
gcc -xc -E -v -
-
对于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中做到这一点。