dynamic-linking
Dynamic Linking 是一个面向 Linux/ELF 动态链接的开发技能,用于指导智能体处理共享库创建、库加载失败排查、RPATH 与 RUNPATH 配置、soname 版本管理、dlopen/dlsym 插件模式、LD_PRELOAD 函数拦截以及符号可见性控制。它适合在出现“Cannot open shared object file”“symbol lookup error”等链接错误,或需要设计可重定位部署与插件架构时使用。技能内容以工作流形式给出:使用 -fPIC 与 -shared 编译共享库、通过 -Wl,-soname 指定 soname 并建立符号链接、用 ldconfig 注册系统库;讲解 MAJOR.MINOR.PATCH 版本递增约定,并用 readelf、objdump 检查 SONAME。还说明 RPATH 在 LD_LIBRARY_PATH 之前搜索、RUNPATH 在其之后搜索,推荐使用 --enable-new-dtags 获得部署灵活性,并可用 $ORIGIN 实现可重定位安装。技能覆盖库搜索顺序、LD_DEBUG 与 ldd 调试方法、RTLD_NOW/LAZY/LOCAL/GLOBAL 等 dlopen 标志、LD_PRELOAD 拦截示例,以及 visibility 属性和版本脚本控制符号导出,并给出常见错误的原因与修复建议。