简而言之,API 和 ABI

API AND ABI in a nutshell

本文关键字:ABI API 简而言之      更新时间:2023-10-16

请用简单的话弄清楚什么是API和ABI(请不要使用维基百科定义(,它们是内核的一部分吗? 它们是函数吗? 他们做什么?

API 是一个应用程序编程接口。它为不同的源代码级软件组件提供了一种相互通信的方法。

API 的一个示例是库的头文件,该文件指定库提供的一组函数以及如何调用它们。例如,在C++中:

//external_library.h
//Processes your data and writes the results to outputlog.txt
void ProcessMyData (std::string data);

这告诉使用 external_library 的程序员他们可以调用一个名为 ProcessMyData 的函数。此函数接收std::string,不返回任何内容,并且(如果文档是最新的(将结果写入outputlog.txt


ABI 是一个应用程序二进制接口。它为二进制组件提供了一种与平台和彼此通信的标准方式。

ABI 的一个例子是系统 V ABI。这指定了各种细节,例如函数调用约定、二进制数据表示、对象文件格式、加载、链接等。您可以在此处阅读适用于AMD64处理器的SysV ABI草案,以了解其内容。

API 应用程序编程接口

这意味着程序员用来编写程序的函数和类。库提供的函数和类是其 API

ABI 应用程序二进制接口。

这是编译程序后在内存中布局函数和类的低级方式。将已编译程序的一部分链接到已编译的库或已编译程序的另一部分需要以相同的方式布局这些部分,以便所有内容正确组合在一起。