Linux 下头文件包含,静态链接,动态链接等默认搜索的系统路径。

Linux 下头文件包含,静态链接,动态链接等默认搜索的系统路径。

1. 头文件路径

#include <>直接到系统指定的某些目录中去找某些头文件。
#include “”先到源文件所在文件夹去找,然后再到系统指定的某些目录中去找某些头文件。

那么gcc如何确定头文件搜索路径呢?

默认路径/usr/include
命令行指定gcc -I xxxx

文件路径有多种,那么先后顺序如何?

1. -I 指定的路径
2. gcc 环境变量指定的路径C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH
3. 上述指定目录/usr/include

2.动态链接时、执行时搜索路径顺序:

1.编译目标代码时指定的动态库搜索路径;

2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

4.默认的动态库搜索路径/lib;

5.默认的动态库搜索路径/usr/lib。

注意,在使用动态库时,有一个匹配规则,比如:-lpthread ,其实对应的是libpthread.so,所以-l默认会把前面的lib替换掉,直接写-lpthread就可以了

3.静态库链接时搜索路径顺序:

1.ld会去找GCC命令中的参数-L

2.再找gcc的环境变量LIBRARY_PATH

3.再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的

4.执行过程

无论是使用动态库还是外部库链接时都是使用的ld连接器;
使用动态库的程序执行时使用动态加载器。在Linux 下,加载器是/lib/ld-Linux.so.X(X是版本号)。然后加载器搜索、加载程序所要使用的动态链接库。搜索顺序见上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值