编辑
2025-04-01
技术杂谈
00
请注意,本文编写于 127 天前,最后修改于 127 天前,其中某些信息可能已经过时。

目录

ABI 与 API 的区别
API (应用程序编程接口)
ABI (应用程序二进制接口)
核心区别
简单类比

一直以来一直难以区别二者...

ABI 指 App Binary Interface (和具体的编程语言无关,是二进制定义的)

API 指 App Programming Interface.

...More detailed by Claude Sonnet 3.7

ABI 与 API 的区别

API (应用程序编程接口)

  • 定义:规定软件组件之间如何交互的接口规范
  • 层级:源代码级别的接口
  • 关注点:函数调用的方法、参数、返回值和异常处理
  • 语言依赖:通常与特定编程语言绑定
  • 变更影响:修改API需要重新编译,但不一定需要重新链接

ABI (应用程序二进制接口)

  • 定义:规定二进制代码如何与其他系统组件交互的低级接口
  • 层级:二进制/机器代码级别的接口
  • 关注点:数据结构布局、调用约定、寄存器使用、系统调用编号等
  • 平台依赖:与特定硬件架构和操作系统紧密相关
  • 变更影响:修改ABI通常需要所有依赖组件重新编译和链接

核心区别

  • API规定如何编写代码,ABI规定如何生成机器码
  • API变化可能不影响ABI,而ABI变化通常导致二进制不兼容
  • 跨语言调用需要兼容的ABI,而不仅是API
  • 预编译库(如.dll、.so文件)依赖稳定的ABI才能保持兼容性

简单类比

API像是两个人用共同语言交流的规则,而ABI则是这些话如何被翻译成电信号并在设备间传输的协议。