我是 Linux 系统编程新手,在阅读时遇到了 API 和 ABILinux系统编程.
API定义:
API 定义了接口,通过这些接口
一个软件可以进行通信
与源级别的另一个。
ABI的定义:
而 API 定义了源
接口,ABI 定义了
两者之间的低级二进制接口
或多个软件
特定的架构。它定义了
应用程序如何交互
本身,应用程序如何交互
与内核,以及如何
应用程序与库交互。
程序如何在源级别进行通信?什么是源级别?它与源代码有什么关系吗?或者库的源代码包含在主程序中?
我知道的唯一区别是 API 主要由程序员使用,而 ABI 主要由编译器使用。
API:应用程序接口
这是您从应用程序/库公开的一组公共类型/变量/函数。
在 C/C++ 中,这是您在应用程序附带的头文件中公开的内容。
ABI:应用程序二进制接口
这就是编译器构建应用程序的方式。
它定义了一些东西(但不限于):
- 参数如何传递给函数(寄存器/堆栈)。
- 谁从堆栈中清除参数(调用者/被调用者)。
- 返回值放置的地方进行return。
- 异常如何传播。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)