我是linux系统编程新手,在阅读时遇到了api和abi。
空气污染指数的定义:
API定义了一个软件在源级与另一个软件通信的接口。
ABI的定义:
API定义源接口,ABI则定义特定体系结构上两个或多个软件之间的低级二进制接口。它定义了应用程序如何与自身交互,应用程序如何与内核交互,以及应用程序如何与库交互。
程序如何在源级进行通信?什么是源级?它与源代码有关系吗?或者库的源被包含在主程序中?
我所知道的唯一不同之处是API主要由程序员使用,ABI主要由编译器使用。
发布于 2018-03-27 08:59:25
API是人类使用的。我们编写源代码。当我们编写一个程序并想要使用一些库函数时,我们编写如下代码:
long howManyDecibels = 123L;
int ok = livenMyHills( howManyDecibels);
我们需要知道有一种方法livenMyHills()
,它接受一个长整数参数。因此,作为一个编程接口,它都是用源代码表示的。编译器将其转换为可执行指令,这些指令符合此语言在此特定操作系统上的实现。在这种情况下,在音频单元上产生一些低级操作。所以特定的比特和字节会在某些硬件上喷射出来。所以在运行时,有很多二进制级别的操作,我们通常看不到。
发布于 2018-03-27 09:52:36
这是从应用程序/库公开的公共类型/变量/函数集。
在C/C++中,这是在应用程序附带的头文件中公开的内容。
编译器就是这样构建应用程序的。
它定义了事物(但不限于):
https://stackoverflow.com/questions/-100003699
复制相似问题