重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天就跟大家聊聊有关什么是python中的ABI,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
在元宝山等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作按需网站策划,公司网站建设,企业网站建设,品牌网站设计,网络营销推广,成都外贸网站建设公司,元宝山网站建设费用合理。
ABI是Application Binary Interface的缩写,应用程序二进制接口。 一个ABI是不同二进制片段的连接纽带。 它定义了函数被调用的规则:参数在调用者和被调用者之间如何传递,返回值怎么提供给调用者,库函数怎么被应用,以及程序怎么被加载到内存。 因此ABI是用来约束链接器的:一个ABI是无关的代码如何在一起工作的规则。 一个ABI也是不同进程如何在一个系统中共存的规则。 举例来说,在Linux系统中,一个ABI可能定义信号如何被执行,进程如何调用syscall,使用大端还是小端,以及栈如何增长。
ABI是系统与应用之间的协议. 一个BINARY(EXEC, LIB)必需符合ABI才能在相应的系统上运行。比如在PC上不管用什么样的COMPILER, 只要产生符合LINUX的ELF文件, 用相应的INSTRUCTION SET(比如INTEL, PPC, SPARC),就可以在一个LINUX机器上运行, 调用系统或别人的LIB。
ABI定义了BINARY的文件格式、内容、 以及装载/卸载程序的要求, 函数调用时参数传递规则, 寄存器, 堆栈的使用等。
保持一个稳定的 ABI 要比保持稳定的 API 要难得多。比如,在内核中 int register_netdevice(struct net_device *dev) 这个内核函数原型基本上是不会变的,所以保持这个 API 稳定是很简单的,但它的 ABI 就未必了,就算是这个函数定义本身没变,即 API 没变,而 struct net_device 的定义变了,里面多了或者少了某一个字段,它的 ABI 就变了,你之前编译好的二进制模块就很可能会出错了,必须重新编译才行。
看完上述内容,你们对什么是python中的ABI有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。