当前位置: 首页 > news >正文

Linux下加载可执行文件所在目录下的so的方法

Linux下默认并不会像Windows那样加载可执行文件所在目录下的so,但是其实是提供了这个功能的,可以通过以下几种方式开启这个功能

1、ld链接时使用-rpath '$ORIGIN',gcc/g++链接时使用-Wl,-rpath,'$ORIGIN':

gcc -o myprogram myprogram.c -L. -lexample -Wl,-rpath,'$ORIGIN'

如果需要放在特定目录(比如bin下的可执行文件要加载lib下的so):

gcc -o myprogram myprogram.c -L. -lexample -Wl,-rpath,'$ORIGIN/../lib'

修改既有可执行文件(patchelf为第三方工具):

patchelf --set-rpath '$ORIGIN' myprogram

要注意这种方法只能作用于当前可执行文件搜索依赖的so,不能用于下一级的so搜索依赖的so

2、使用shell脚本加载器,并使用LD_LIBRARY_PATH环境变量指定搜索路径:

LD_LIBRARY_PATH='$ORIGIN' ./myprogram

或者:

export LD_LIBRARY_PATH='$ORIGIN'
./myprogram

要注意这种方法将作用于所有读到该环境变量的程序以及子级的so搜索依赖的so,特别是可能会影响子进程

3、使用shell脚本加载器,并使用ld.so的--library-path指定搜索路径

/lib64/ld-linux-x86-64.so.2 --library-path '$ORIGIN' ./program

要注意这种方法将作用于该程序以及子级so的搜索依赖的so,但不会影响子进程

这个方法的另一个好处就是可以将ld.so也集成进软件包中

相关文章:

  • rk3568build-linux.sh解析
  • 项目二 - 任务7:统计一组学生成绩
  • 【计量地理学】实验七 多种地统计方法的插值比较
  • Cribl 对Windows-xml log 进行 -Serialize-05
  • 王博:影视领域的多元创作先锋,以卓越才华开启新篇章
  • 如何编写JavaScript插件
  • MySQL-锁机制3-意向共享锁与意向排它锁、死锁
  • 从入门到精通汇编语言 第六章(中断及外部设备操作)
  • ONLYOFFICE深度解锁系列.3-OnlyOffice集成第三方软件原理揭秘:如何提高文件打开速度
  • 器件(七)—MOS管选型及驱动电路设计
  • 动态规划入门:背包问题求具体方案(以0-1背包问题为例)
  • 免费图片软件,可矫正倾斜、调整去底效果
  • 【二叉树专题】一道深入浅出的 DFS 题:求二叉树的直径(含通俗易懂讲解)
  • 精准分割 - 深入解析 Kubernetes 中的 NVIDIA Multi-Instance GPU (MIG)
  • JavaScript 笔记 --- part 4 --- Web API (part 2)
  • 自定义请求头导致跨域的解决办法
  • AI日报 - 2025年04月20日
  • 每天学一个 Linux 命令(26):less
  • 从入门到精通汇编语言 第五章(流程转移与子程序)
  • 源道-做股票应该从传统的技术图形转向行业规律思考
  • 三部门:对不裁员少裁员的参保企业实施稳岗返还政策至今年底
  • 新质观察|解构低空经济产业集群发展战略
  • 全国登记在册民营企业超过5700万户,占企业总量92.3%
  • 张小泉:控股股东所持18%股份将被司法拍卖,不会导致控制权变更
  • 遭遇FIFA三个转会窗禁令,申花有苦难言将选择赔偿
  • 湖北一季度GDP为13543.49亿元,同比增长6.3%