包含文件存储在何处 - Ubuntu Linux, GCC
因此,当我们进行以下操作时
#include <stdio.h>
与
#include "myFile.h"
编译器(就我而言是 GCC)知道 stdio.h(甚至对象文件)在我硬盘上的位置。它只需利用这些文件,无需我的任何干预。
我认为,在我的 Ubuntu Linux 机器上,这些文件存储在 /usr/include/
。编译器如何知道在哪里查找这些文件?在哪里可以找到这种配置?
既然我问的是关于这些 include 文件的问题,那么这些文件的来源是什么?我知道这在 Linux 社区可能比较模糊,但谁来管理这些文件?谁会为 Windows 编译器提供并管理同样的文件?
我一直以为这些文件是编译器自带的,但这只是一种假设......</del>;
69
3
请参见此处: [搜索路径][1]
摘要
当包含文件位于括号中时,预处理器会首先搜索通过 -I 标志指定的路径。 然后搜索标准包含路径(请参阅上述链接,并使用 -v 标志在您的系统上进行测试)。
当包含文件使用引号时,预处理器首先搜索当前目录,然后是-iquote指定的路径,接着是-I路径,然后是标准路径。
使用 -nostdinc 可以阻止预处理器搜索标准路径。
环境变量 也可用于添加搜索路径。
编译时,如果使用 -v 标志,就可以看到所使用的搜索路径。
gcc 是一个丰富而复杂的 "协调 "程序,它调用许多其他程序来执行任务。为了查看
#include "goo"
和#include
在系统中的搜索位置,我推荐使用这是查看包含文件搜索列表的一种方法,包括(如果有的话)
#include "..."
会搜索但#include
不会搜索的目录。我展示的这个特定列表实际上是在 Mac OS X(又称达尔文)上使用的,但我推荐的命令可以在任何 gcc 运行正常的系统上显示搜索列表(以及我用...
替换的有趣的配置细节)。卡尔已经回答了你关于搜索路径的问题,但关于文件的源代码,需要注意的是,如果你安装了
libfoo
软件包并想对其进行开发(即使用其头文件),你还需要安装libfoo-dev
。正如你所看到的,标准库头文件已经在/usr/include
中了。请注意,某些头文件较多的库会将它们安装到一个子目录中,例如
/usr/include/openssl
。要包含这些库,只需提供不含/usr/include
部分的路径即可: