You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux不同场景下运行时重定位的执行主体分别是什么?

你梳理的Linux系统运行时重定位执行主体的规则整体完全准确,以下补充各场景的细节边界方便你进一步理解:

  • 位置相关的静态链接可执行文件:无需运行时重定位。这类二进制在编译链接阶段就固定了加载基地址,所有符号地址计算都在链接时完成,内核仅需将其映射到约定的固定地址即可运行,无额外重定位步骤。
  • 动态链接可执行文件:由动态链接器ld.so负责重定位。内核加载完动态链接可执行文件后会先把控制权交给ld.so,由ld.so加载所有依赖的动态库,完成可执行文件本身、所有动态库的符号解析和重定位后,才会把控制权移交到可执行文件的入口代码。

    补充:若开启默认的延迟绑定机制,部分函数的重定位会推迟到函数第一次被调用时执行,执行主体仍然是ld.so。

  • 静态链接PIE:由libc启动代码执行重定位。静态链接PIE不依赖动态链接器,内核加载完成后直接把控制权交给程序入口即libc的_start启动代码,启动代码会优先完成自身的重定位工作,再执行后续初始化和主逻辑。
  • 动态链接器ld.so自身:可自完成重定位。ld.so本身是位置无关的特殊二进制,内核加载它之后,它会先执行内置的极小段自举代码完成自身的重定位,不需要依赖任何外部组件。

内容的提问来源于stack exchange,提问作者uvuv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:57:02