我已经看到了this个问题
许多编译器和编译器工具链支持-I< dir > and -isystem< dir >命令行参数。我知道他们分别在搜索路径和系统搜索路径中添加了目录,最后搜索了系统目录,并且系统帮助您覆盖默认系统库。
我也知道他们会得到海湾合作委员会的特殊待遇,以修复有缺陷的系统标题'但海湾合作委员会在这个特殊待遇中做了什么具体的事情?
另外,我不清楚编译器是只查找指定的目录而不是更深,或者是否在某种程度上递归搜索这些目录。
如果我需要访问/path/to/lib
和path/to/lib/aBitFurther
中的资源,我只需要-I /path/to/lib
吗?
答案 0 :(得分:1)
主要区别在于GCC会抑制系统标头中的警告。在某些情况下,这使得这些标头可以使用某些非标准的GNU扩展。
你提到的buggy系统头文件的处理是一个覆盖目录树,其头文件使用fixincludes
工具进行预处理,但这不是你在GNU / Linux系统上看到的,因为它非常混乱并导致很多问题(例如隐藏官方系统标题的后续更新)。我希望只有这一点才具有历史意义(尽管GCC在构建过程中仍会准备这些标题)。