Bro*_*olf 15 c++ compiler-construction include header-files
我想知道Mac OS X,Windows和Linux上的编译器如何知道在哪里可以找到C头文件.
具体来说,我想知道它是如何知道在哪里找到#include <>括号.
#include "/Users/Brock/Desktop/Myfile.h" // absolute reference
#include <stdio.h> // system relative reference?
Run Code Online (Sandbox Code Playgroud)
我假设它咨询的系统上有一个文本文件.它如何知道在哪里寻找标题?是否可以修改此文件,如果是这样,该文件驻留在操作系统上的哪个位置?
R S*_*hko 13
构建编译器时,它知道几个标准位置来查找头文件.其中一些与编译器的安装位置无关(例如/ usr/include,/ usr/local/include等),其中一些基于安装编译器的位置(对于gcc,由编译器控制) - 运行configure时的--prefix选项).
像/ usr/include这样的位置是众所周知的,并且该位置的"知识"内置于gcc中.像/ usr/local/include这样的位置不被认为是完全标准的,可以在使用configure的--with-local-prefix选项构建gcc时设置.
也就是说,您可以使用编译器-I命令行选项添加新目录以搜索包含文件的位置.尝试包含文件时,它将在我在第一段中讨论的目录之前查看使用-I标志指定的目录.