Hasty Briefsbeta

双语

The .a File Is a Relic: Why Static Archives Were a Bad Idea All Along

10 months ago
  • #static linking
  • #C programming
  • #software development
  • 文章批评了静态库(.a文件)作为C语言SDK静态链接方式的固有缺陷
  • 动态链接(.so文件)支持无需重新编译即可更新和安全修复,而静态链接会将依赖项打包进可执行文件
  • 静态库本质上只是原始目标文件(.o)的简单归档,会导致符号冲突和二进制文件膨胀等问题
  • --whole-archive等链接器选项试图缓解问题,但会引发新缺陷,例如强制包含所有目标文件
  • 静态库缺乏符号可见性控制,会暴露内部函数,带来安全和逆向工程风险
  • 作者提出新格式'静态捆绑对象'(.sbo),在保留静态链接优势的同时吸收动态库优点,尽管可能增加二进制体积
  • 过渡到新链接格式需要工具链大规模更新和Linux发行版的广泛适配,这将是个漫长过程