如何找出g++编译时的系统头文件的搜索路径

有时候,我们需要浏览系统头文件的内容从而知道该头文件里都有哪些函数以及类型,但如何找到这些系统头文件所在的文件目录呢?可以通过写一个简单的c++程序,来观察g++是怎么查找系统头文件的。


譬如下面的一段程序:

#include<nonexist.h> // This is a non-existant system header

int main ( int argc, char* argv[] )
{
    return 0;
}

因为文件“nonexist.h”是用<>括住,所以g++在查找该文件时会去系统头文件所在的目录查找,而这又是一个不存在的文件,所以g++会搜遍所有能搜的文件目录,最后编译告知没有找到该文件:

gcc version 4.7.2 (Debian 4.7.2-5) 
COLLECT_GCC_OPTIONS='-v' '-c' '-shared-libgcc' '-mtune=generic' '-march=i586'
 /usr/lib/gcc/i486-linux-gnu/4.7/cc1plus -quiet -v -imultiarch i386-linux-gnu -D_GNU_SOURCE test_open.cpp -quiet -dumpbase test_open.cpp -mtune=generic -march=i586 -auxbase test_open -version -o /tmp/ccQHsJ9S.s
GNU C++ (Debian 4.7.2-5) version 4.7.2 (i486-linux-gnu)
        compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64350
ignoring nonexistent directory "/usr/local/include/i386-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.7/../../../../i486-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/i486-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/i486-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.7/include-fixed
 /usr/include/i386-linux-gnu
 /usr/include
End of search list.
GNU C++ (Debian 4.7.2-5) version 4.7.2 (i486-linux-gnu)
        compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64350
Compiler executable checksum: 62bfd556e00a93e3d7f66f6876d73826
test_open.cpp:1:22: fatal error: nonexist.h: No such file or directory
compilation terminated.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值