Linux 查看g++ 默认include路径

GCC编译器路径解析
本文详细介绍了使用GCC编译器时,如何通过特定命令查看包含路径和搜索目录,包括系统默认路径及用户自定义路径,对于理解GCC如何查找头文件具有重要意义。

使用命令:

`g++ -print-prog-name=cc1plus` -v
  • 1

结果:

忽略不存在的目录“/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include-fixed”
忽略不存在的目录“/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/include”
#include "..." 搜索从这里开始:
#include <...> 搜索从这里开始:
 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5
 /usr/lib/gcc/x86\_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/x86_64-redhat-linux
 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/backward
 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include
 /usr/local/include
 /usr/include
搜索列表结束
### 3.1 使用 `cpp -v` 查看默认 include 路径Linux 系统中,可以通过以下命令查看 C/C++ 编译器默认的头文件搜索路径: ```bash cpp -v ``` 该命令会输出编译器在预处理阶段查找头文件的路径列表。输出内容通常包括多个目录,例如: ``` #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/x86_64-linux-gnu/9/include /usr/local/include /usr/include/x86_64-linux-gnu /usr/include End of search list. ``` 这些路径表示系统默认的头文件搜索顺序,首先是用户通过 `-I` 指定的路径,其次是环境变量 `C_INCLUDE_PATH` 和 `CPLUS_INCLUDE_PATH` 中的路径,最后是系统默认路径,如 `/usr/include` 和 `/usr/local/include`[^2]。 ### 3.2 使用 `gcc -print-search-dirs` 查看编译器搜索路径 除了 `cpp -v`,还可以使用以下命令查看 GCC 编译器的搜索路径: ```bash gcc -print-search-dirs ``` 该命令会列出所有编译器查找头文件和库文件的路径,包括标准头文件路径和库路径。输出内容通常包括 `install`, `programs`, 和 `libraries` 三部分,其中 `libraries` 部分显示的是链接器查找库文件的路径[^4]。 ### 3.3 查看环境变量中设置的 include 路径 如果用户或系统管理员通过环境变量设置了额外的头文件路径,可以通过以下命令查看: ```bash echo $C_INCLUDE_PATH echo $CPLUS_INCLUDE_PATH ``` 这些命令会输出当前用户设置的 C 和 C++ 头文件路径。如果设置了这些变量,GCC/G++ 在编译时会将这些路径加入头文件搜索路径列表中[^1]。 ### 3.4 默认系统 include 路径 Linux 系统的标准头文件通常位于以下目录中: - `/usr/include`:用于存放系统级头文件。 - `/usr/local/include`:通常用于存放用户自行安装的库的头文件。 - `/usr/lib/gcc-$(arch)-linux-gnu/$(version)/include`:存放特定 GCC 版本的头文件。 这些目录是 GCC/G++ 默认搜索的路径,除非特别指定 `-nostdinc` 选项来禁用默认头文件路径[^3]。 ### 3.5 在 C/C++ 代码中使用相对路径包含头文件 在代码中使用 `#include <...>` 和 `#include "..."` 时,GCC/G++ 会按照不同的顺序查找头文件: - `#include <stdio.h>`:仅在系统默认路径中查找头文件。 - `#include "stdio.h"`:首先在当前源文件所在目录查找,如果未找到,则在系统默认路径中查找。 例如,若 `/usr/local/include` 是系统默认路径,且头文件 `v8.h` 位于 `/usr/local/include/node/v8.h`,则可以使用以下方式包含: ```c #include <node/v8.h> ``` 这种方式可以简化路径引用,避免冗长的绝对路径[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值