gcc编译搜索路径顺序

参考文章
gcc编译时的搜索路径顺序zz

1、头文件

C/C++中可以通过#include <stdio.h>和#include "stdio.h"包含头文件,区别是:
#include <stdio.h>,直接到系统指定目录去查找头文件;
#include “stidio.h”,会先到当前工程目录查找头文件,如果没找到再到系统指定目录查找。
gcc编译时查找头文件,按照以下路径顺序查找:
1、 搜寻会从-I开始,比如:

gcc -I /usr/local/include/node a.c

2、 然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
3、 再找系统默认的路径
  /usr/include
  /usr/local/include
  /usr/lib/gcc-lib/i386-linux/2.95.2/include

2、库文件

编译的时候:
1、 gcc会去找-L
2、 再找gcc的环境变量LIBRARY_PATH
3、 再找内定目录
  /lib:
  /usr/lib:
  /usr/local/lib:
这是当初compile gcc时写在程序内的

3、运行时动态库的搜索路径

1、 在编译目标代码时指定该程序的动态库搜索路径,还可以在编译目标代码时指定程序的动态库搜索路径。这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":“分隔。
2、 通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号”:"分隔)。
3、 在配置文件/etc/ld.so.conf中指定动态库搜索路径,该文件中每行为一个动态库搜索路径。每次编辑完该文件后,都必须运行命令ldconfig使修改后的配置生效。
4、 默认的动态库搜索路径
  /lib
  /usr/lib
动态库搜索的详细例子,可以参考这篇文章
gcc如何指定编译头文件的位置

附:/lib、 /usr/lib和 /usr/local/lib区别

参考文章
usr 很多人都认为是user缩写,其实不然,是unix system resource缩写。
/lib是内核级的,
/usr/lib是系统级的,
/usr/local/lib是用户级的。

/lib/ — 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件。
目录 /usr/lib/ 中含有更多用于用户程序的库文件。

/usr/bin:几乎所有的系统可执行文件都会安装在这里
/usr/local/bin:则是可以存放一些系统用户自己特定的可执行文件,不用担心会被系统升级之类的行为覆盖,破坏,这个目录不是必须的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值