编译时连接与运行时链接及静态库链接

预处理 include 顺序
  • 本地编译器

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

1.参数-I指定的路径
指定路径有多个路径时,按指定路径的顺序搜索
2.gcc的环境变量
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
3.找系统目录
/usr/include
/usr/local/include
/usr/lib/gcc-xxxx/xxxx

作者:悟剑声
链接:https://www.jianshu.com/p/916264162459
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
编译时连接与运行时链接的参考路径
  • 本地编译器
//本地编译器动态库编译时链接
-L
/lib 
/usr/lib 
/usr/local/lib


编译时链接的话,能查到libname.so
且这个文件要不是个link,要不就是实际的动态库文件,否则会报错
说链接顺序没有意义,因为并不链接到文件里面去
注意:
不包括LD_LIBRARY_PATH与/etc/ld.so.conf.
上面两种配置是运行时链接要参考的路径,并不是编译时链接要参考的路径.
//本地编译器动态库运行时链接
1. 编译目标代码时指定的动态库搜索路径;-Wl,-rpath,
2. 环境变量 LD_LIBRARY_PATH 指定的动态库搜索路径
	// sudo 执行的命令并不会包含环境变量 LD_LIBRARY_PATH,
	// 如果要使用,需要在执行 sudo 的时候通过 -E 选项显示的将 LD_LIBRARY_PATH 传到执行进程的环境中, 或者在脚本中通过 export 的方式传送 LD_LIBRARY_PATH。
3. 配置文件 /etc/ld.so.conf 中指定的动态库搜索路径
	// 必须 ldconfig 才可用
5. 默认的动态库搜索路径 /lib
6. 默认的动态库搜索路径 /usr/lib
  • 交叉编译器
//交叉编译器动态库编译时链接



如果是交叉编译器的话,例如可以在/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib这里添加
//交叉编译器动态库运行时链接


//静态库编译时链接
//静态库没有运行时链接的概念,因为已经被链接进可执行文件里去了
-L
/lib 
/usr/lib 
/usr/local/lib
顺序暂不更新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值