linux中include搜索的路径

来源:互联网 发布:java程序员转行做别的 编辑:程序博客网 时间:2024/03/29 00:47

在写c和c++代码的时候,首先需要include必要的一些库文件。对于库文件的使用但凡会写c的人抖动一些,不过include具体是怎么引入的,却鲜为人知。

首先在c中引入头文件一般是***.h的形式,而在c++中一般没有.h。具体原因是c++的函数基本上都包含在std命名空间中,为了能兼容c中的头文件,就将c中原有的一些头文件进行了重写,并把他们包含在写的名称的文件中,入stdlib.h变成cstdlib.但是其中的内容是一样的。

关于《》和“”的区别应该很简单理解,

#include <***.h>,直接到系统指定目录去查找头文件。

#include "***.h",会先到当前目录查找头文件,如果没找到在到系统指定目录查找。

那么系统指定目录在哪里?有资料说系统的指定目录存在于C_INCLUDE_PATH和CPLUE_INCLUDE_PATH以及动态链接库LD_INCLUDE_PATH中,但是不知什么原因使用echo $C_INCLUDE_PATH显示该环境变量为空。

有资料显示系统的默认指定目录分别是/usr/include,/usr/local/include,(用户空间的库文件),/usr/include/i386-linux-gnu/sys/(系统级别的库文件,引用此处的头文件需要添加sys/)/usr/lib/gcc-lib/i386-linux/2.95.2/include(gcc库文件的路径,各个系统不一致)。

     当然有时候你会发现存在引入头文件的时候包括路径如:#include<sys/socket.h>这个说明该头文件并没有直接包含在系统的指定目录中,该头文件在指定目录的子目录sys目录下。

     在查找include目录的时候首先查找编译选项中-l 后边的目录,然后依次查看系统默认的指定目录。

      当你不知道所引用的头文件的目录在什么地址的时候,可以使用Gcc -E ***.c >> ***.i 命令进行c文件的预处理,在产生.i 文件中包含了完整的头文件路径。



0 0
原创粉丝点击