c 编译的时候都会去哪些目录寻找动态链接库

在C语言编译过程中,编译器在寻找动态链接库(通常具有.so扩展名)时,会遵循一定的搜索路径。这些路径包括系统默认库位置、环境变量指定的路径以及通过配置文件或命令行参数指定的路径。以下是详细的搜索路径和说明:

  1. 系统默认库位置
    • 对于32位程序,系统默认会在/lib/usr/lib目录中查找动态链接库。
    • 对于64位程序,系统默认会在/lib64/usr/lib64目录中查找动态链接库。
  2. 环境变量指定的路径
    • LD_LIBRARY_PATH环境变量用于指定额外的动态链接库搜索路径。编译器和运行时系统都会查看这个环境变量中列出的目录。
    • LIBRARY_PATH环境变量通常用于指定静态链接库的搜索路径,但在某些情况下也可能影响动态链接库的搜索。
  3. 配置文件指定的路径
    • /etc/ld.so.conf文件及其包含的目录(通常在/etc/ld.so.conf.d/下)中的.conf文件,可以指定额外的动态链接库搜索路径。
    • 修改这些配置文件后,需要运行ldconfig命令来更新动态链接库的缓存文件/etc/ld.so.cache
  4. 命令行参数指定的路径
    • 在编译时,可以使用-L参数来指定额外的库文件搜索路径。这些路径会被优先搜索。
    • 在运行时,可以使用-Wl,-rpath参数来指定运行时库文件的搜索路径。

总结

  • C语言编译时寻找动态链接库的路径主要包括系统默认库位置、环境变量指定的路径、配置文件指定的路径以及命令行参数指定的路径。
  • 系统默认库位置是根据程序的位数(32位或64位)来确定的。
  • LD_LIBRARY_PATHLIBRARY_PATH环境变量可以影响编译时和运行时的库文件搜索。
  • /etc/ld.so.conf及其相关配置文件和ldconfig命令用于配置和管理动态链接库的搜索路径。
  • -L-Wl,-rpath等命令行参数可以在编译时和运行时显式指定库文件的搜索路径。
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值