You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
应用程序二进制接口(ABI)是程序通过调用函数使用其它编译程序中的数据结构的一种方式。它是应用程序接口(API)的编译版本。换句话说:描述类、函数、数据结构、枚举和常量的头文件,它们使应用程序能够执行所需的任务方法是编译到一组地址和预期的参数值和内存。编译 ABI 提供程序的结构大小和布局。
10
+
11
+
编译使用 ABI 的应用程序必须使得可用地址、预期参数值和内存结构大小和布局与 ABI 提供程序编译的那些协议一致。这通常是通过对 ABI 提供程序提供的标头进行编译来实现的。
12
+
13
+
由于 ABI 提供方和 ABI 用户可能会在不同时刻使用不同版本的编译器进行编译,因此确保 ABI 兼容性的部分责任在于编译器。不同版本的编译器(可能由不同的供应商提供)都必须从具有特定内容的头文件生成相同的 ABI,并且必须使用 ABI(根据约定使用给定头文件描述的 API)生成应用程序代码。现代编译器具有相当好的跟踪记录,不破坏它们编译的应用程序的 ABI 兼容性。
14
+
15
+
保持并确保 ABI 兼容性的责任在于维护标头文件的团队,后者提供 API;在编译后使得在 ABI 中保持稳定。对头文件进行更改是可以的,但必须密切跟踪更改的性质,以确保在编译时 ABI 不会更改,从而不会导致 ABI 的现有用户与新版本不兼容。
0 commit comments