SuperAPI AI 工具集

linkers-lto

通用与其它

查看项目

更新于 10-16 01:18

技能介绍

用途:该技能用于指导代理处理链接器选择、常用链接选项、链接顺序问题、LTO 配置以及符号可见性管理,覆盖链接阶段与链接时优化相关任务。

主要能力:

  • 链接器选择:GNU ld(Linux 默认,通用稳定)、gold(-fuse-ld=gold,C++ 更快,支持 LTO 插件)、lld(-fuse-ld=lld,最快且并行,Clang LTO 必需)。可用 gcc -v -o prog main.c 2>&1 | grep 'Invoking' 查看实际调用的链接器。
  • 通过编译器驱动传递链接选项,如 -Wl,flag1,flag2 或 -Wl,flag1 -Wl,flag2,支持 -rpath、--as-needed、--gc-sections、-z,relro、-z,now 等。
  • 链接顺序:GNU ld 按从左到右处理归档,库须放在需要它的目标文件之后;循环依赖可用 -Wl,--start-group ... -Wl,--end-group。
  • GCC LTO:编译与链接阶段均需 -flto;归档须用 gcc-ar / gcc-ranlib;支持 -flto=auto 或 -flto=N 并行。
  • Clang/lld LTO:完整 LTO 用 -flto,ThinLTO 用 -flto=thin 并可指定 -Wl,--thinlto-cache-dir 缓存。
  • 死代码剥离:编译加 -ffunction-sections -fdata-sections,链接加 -Wl,--gc-sections,可用 -Wl,--print-gc-sections 验证;macOS 默认 -dead_strip。
  • 符号可见性:-fvisibility=hidden 加显式可见性属性或版本脚本控制导出。
  • 常见错误排查:未定义引用、重复定义、找不到库、重定位截断、GLIBC 版本缺失、循环引用等。
  • 可用 -Wl,-Map=prog.map 生成映射文件辅助调试。

适用场景:配置链接器、启用 LTO、缩小二进制体积、排查链接错误与分析符号布局。

限制:资料未提供具体平台与版本要求、性能实测数据或收费信息;实际行为取决于所用工具链与构建环境。