GCC编译时的搜索路径

众所周知,C/C++包含头文件时有如下两种方式:
1. #include
2. #include "xx"

这些头文件可能出现在如下的位置:
1. 系统头文件目录  /usr/local/include, /usr/include,gcc的头文件目录等
2. 文件所在目录
3. 编译时,-I选项指定的目录
4. 编译时,-iquote选项指定的目录
5. 编译时,-I-选项指定的目录(不推荐使用)

在预编译时,这些头文件会被替换到包含的位置,
那么在上述可能出现位置的查找顺序如何呢?
1. #include
先查到 -I指定目录, 后查找系统头文件目录,不查找文件所在目录 
(如果-I指定的目录包含在系统头文件目录中,-I指定的目录被忽略)
2. #include "xx"
先查找文件所在的目录(如果该文件是被包含的,那么会一层层往回找包含它的文件所在的目录),
然后查找 -iquote指定目录,然后查找和1.一样的目录(先-I,后系统目录)。

参考资料:
http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html

你可能感兴趣的:(GCC编译时的搜索路径)