环境变量,LD_PRELOAD和LD_LIBRARY_PATH区别

环境变量:
用于存储配置信息的变量,每个系统进程都可以访问这些变量,并根据它们的值来改变自己的执行方式或操作环境;

作用:

  1. 配置系统行为:比如指定默认的文本编辑器,默认加载程序
  2. 传递信息给程序:很多程序依赖环境变量来获取系统信息或配置。例如,PATH 环境变量用于告诉系统在什么路径下查找可执行文件,HOME 变量定义了当前用户的主目录
  3. 动态控制程序运行:通过修改环境变量,用户可以影响程序的运行行为。例如,通过 LD_LIBRARY_PATH 可以指定程序加载共享库时优先查找的路径

分类:
全局和局部,局部环境变量仅在当前shell脚本或者进程中有效,推出后就失效

生命周期:
子进程继承父进程的环境变量,但子进程中新添加的环境变量不会被父进程拿到

LD_PRELOAD:
一个环境变量,用于在运行时强制加载一个动态库,它的优先级最高,比编译时绑定的动态库优先级还高;

原理: linux的动态链接器 ld.so 会优先加载 LD_PRELOAD 中的库,覆盖或替换程序原本链接的库

作用:

  1. 重写系统库函数:比如替换 malloc 和 free 函数
  2. 拦截库调用:可以通过 LD_PRELOAD 来监控或修改一个程序对某个共享库的调用,而无需修改程序本身
  3. 替换动态库:有时,系统提供的动态库存在 bug 或性能问题,通过 LD_PRELOAD 可以临时替换掉有问题的库

LD_LIBRARY_PATH:
用于指定动态链接器在运行时搜索共享库的路径;当你运行一个依赖共享库的程序时,动态链接器会根据该路径列表,优先搜索目录中的动态库文件,而非默认的 /usr/lib 路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值