c++ - 为什么应用程序二进制接口(interface)对编程很重要

标签 c++ c operating-system binary-compatibility abi

我不明白为什么 ABI 是开发用户空间应用程序的重要上下文。操作系统的系统调用集是否被视为 ABI?但如果是这样,那么关于系统调用的所有复杂性不都封装在标准库中了吗?

那么ABI 兼容性是否仅与在不同平台上运行静态链接的应用程序相关,因为系统调用将嵌入到二进制文件中?

最佳答案

ABI定义了一组系统通用的对齐方式、调用约定和数据类型。如果您要进行任何类型的动态链接,这会使 ABI 变得非常重要;因为没有它,一个应用程序的代码无法调用另一个应用程序提供的代码。

所以,不。 ABI 兼容性与所有动态链接相关(与静态链接无关)。

值得再次强调的是,系统的 ABI 会影响应用程序间的工作以及应用程序到操作系统的工作。

关于c++ - 为什么应用程序二进制接口(interface)对编程很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2032502/

相关文章:

c++ - 关于 "C4800: ' int' : forcing value to bool 'true' or false'", 的警告为什么?

c++ - 在 libharu 中将长字符串转换为多行字符串

python - OpenCV图像平滑技术的直方图图

c - nl_langinfo() - 信息太多

c - 虚拟内存中的两个进程

c++ - 如何从在 Cygwin 下构建的 C++ 程序链接到 DLL?

c++ - 你可以使用不同大小的 boost::multi_arrays 调用一个函数吗?

c - IAR 嵌入式工作台。 __iar_program_start 在哪里?

windows - 为什么 OpenGL 和 CUDA 上下文内存贪婪?

linux - sudo模式和内核模式有区别吗?