gcc 头文件搜索路径


本文涉及 gcc 的命令中,把 gcc 换成 g++ 同样可以运行。

一、双引号和尖括号引用头文件的区别

对于双引号和尖括号包含的头文件的搜索方式有细微差别,前者的搜索路径选择先后为:使用 #include 的文件所在的当前路径,-I 指定的路径,环境变量 C_INCLUDE_PATHCPLUS_INCLUDE_PATH 包含的路径,内定路径;而后者就只有三种,依次是 -I 指定的路径,环境变量 C_INCLUDE_PATHCPLUS_INCLUDE_PATH 包含的路径,内定路径。下文着重介绍后者的那三种选择:

  • -I 参数指定的路径;
  • 环境变量 C_INCLUDE_PATHCPLUS_INCLUDE_PATH 包含的路径;
  • 内定路径。

前两种可由我们自己指定哪些路径,第三种是 gcc 内置的,用户改变不了。


二、-I 参数指定的路径

-I 参数的用法为 gcc <filename> -I <pathname_1> -I <pathname_2>,-I 后边只能紧跟一个路径名,想要手动指定几个头文件搜索路径,就得写几个 -I

gcc hello.c -I ~/mydir1 -I ~/mydir2

三、环境变量 C_INCLUDE_PATH 或 CPLUS_INCLUDE_PATH 包含的路径

gcc 在搜索完 -I 参数指定路径后,便会查看环境变量 C_INCLUDE_PATHCPLUS_INCLUDE_PATH 包含的路径,这两个环境变量都是路径的集合,我们可以手动往这两个环境变量里添加路径。

C_INCLUDE_PATH 为例,添加路径有两种方法,如果该新增路径只是临时需要,则可以在命令行输入 echo C_INCLUDE_PATH=$C_INCLUDE_PATH:<pathname>;如果是长期需要,则应在 ~/.bashrc/etc/profile 添加 export C_INCLUDE_PATH=​$C_INCLUDE_PATH:<pathname>,然后保存并退出文件,在命令行中执行命令 source ~/.bashrcsource /etc/profile


四、内定路径

第三种的内定路径无法更改,但可以查看,如何查看呢?可先随便写一个 C 文件,然后在命令行执行命令 gcc <filename> -v 以显示整个编译过程。显示内容有一行是 #include <...> search starts here:,下边显示的路径便是 gcc 内定的头文件搜索路径。笔者经过对 g++ 和 gcc 的命令测试,对内定的头文件搜索目录归纳如下。

# 编译 C 文件或 C++ 文件时都会搜索以下五个路径
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/7/include
/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
/usr/include
/usr/include/x86_64-linux-gnu

# 编译 C++ 文件时才会搜索以下三个路径
/usr/include/x86_64-linux-gnu/c++/7 
/usr/include/c++/7
/usr/include/c++/7/backward
  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值