如何查找gcc、g++默认include路径?注意:"`"是Tab上面的那个符号。
#gcc
`gcc -print-prog-name=cc1plus` -v
#g++
`g++ -print-prog-name=cc1plus` -v
我们都知道在编译的预处理阶段, 编译器会展开所有的#include<...>和#include"..."文件,那么编译器是按照什么顺序来查找头文件的呢?
- 首先会根据gcc 、g++ -I 选项,在预处理的时候去当前路径下寻找.h文件。
g++ -c ttcp_blocking.c -I /home/zhaozheng/code/chensuo/code/muduo-master/
- 然后查找gcc、g++环境变量:
#gcc
export C_INCLUDE_PATH=XXXX:$C_INCLUDE_PATH
#g++
export CPLUS_INCLUDE_PATH=XXX:$CPLUS_INCLUDE_PATH
以上修改可以直接命令行输入(一次性),可以在/etc/profile中完成(对所有用户生效),也可以在用户home目录下的.bashrc或.bash_profile中添加(针对某个用户生效),修改完后重新登录即生效(当然也可以调用source指令,因为重启的意义也是把这个文件刷新一遍,一般修改的是.bashrc)。
- 之后再找下面的默认目录(没写完,还有别的),是有先后顺序的,当找到了就不会再继续查找了。
#当前用户的include路径,一般自己安装的库放这里。比如PCL库,一般推荐放在这里
/usr/local/include
#整个系统的include路径,大家都会用的放这里,比如yum自动安装C++的时候,它的头文件就在这里
/usr/include
如何修改gcc、g++默认include路径?
- 方法一:通过命令行添加
g++ -I/home --I/tmp main.cpp #/home的优先级高于/tmp
- 方法二:通过环境变量添加
#配置文件.bashrc是在/home/zss/,当前用户下,~就表示当前目录,你也可以通过指令
locate .bashrc
vim ~/.bashrc
export CPLUS_INCLUDE_PATH = $CPLUS_INCLUDE_PATH:/Apollo
source ~/.bashrc
#最后需要让修改生效
- 方法三:添加到/usr/local/include或者 /usr/include路径下
注意:
优先级排序:通过编译指定的include > 环境变量 > /usr/local/include > /usr/include