博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ABI 及 ARM EABI
阅读量:4284 次
发布时间:2019-05-27

本文共 2621 字,大约阅读时间需要 8 分钟。

  • 简单介绍
ABI : application binary interfaceABI : 是规范.EABI : Embedded application binary interfaceEABI : 是 arm 对于 ABI规范的比较新(2005年)的实现 // powerpc也有一个实现叫做EABIOABI : Old application binary interfaceOABI : 是 arm 对于 ABI规范的比较老的实现

资料获取

  • 官方资料
 
  • 专业书籍
专业嵌入式软件开发 全面走向高质高效编程 Chapter 10 abi/eabi 规范,缔造程序兼容合约	讲述的是x86
// https://www.veryarm.com/51150.html// https://www.cnblogs.com/gccbuaa/p/6809006.html// https://blog.csdn.net/emtribe/article/details/8598941// https://blog.csdn.net/hongjiujing/article/details/2686556// https://wiki.debian.org/ArmEabiPortABI是系统与应用之间的协议.保证应用能运行在系统上(调用rootfs提供的LIB及调用进入系统调用的封装)// 一个应用能运行在系统上要考虑很多要素...一个BINARY(EXEC, LIB)必需符合ABI才能在相应的系统上运行.比如我在PC上用不管什么样的COMPILER, 只要满足以下两个条件,就可以在一个linux机器上运行.	1.产生符合Linux的ELF文件 // 此处隐含有 ELF文件和Linux 两个要素,即 linux 要和ELF匹配, ELF 要和linux匹配,即每个因素都要因为匹配做出努力.	2.用相应的INSTRUCTION SET(比如x86,mips,ARM). ABI 规范了 如何满足条件1 (产生符合Linux的ELF文件)	1.ABI定义了BINARY的文件格式, 内容, 以及装载/卸载程序的要求, 函数调用的参数传递规则, 寄存器, 堆栈的使用,以及系统调用时 syscall number 的放置程序正常编译和运行需要考虑的事情	在编译的时候		一个应用程序,调用了.so库中的函数或者系统调用,		如果它的编译器可以找到被调用函数或者系统调用的话,则编译可以同过	在运行时候		在调用库函数或者系统调用的时候,		1.应用要先要以库函数或者系统调用指定的方式和位置(内存或者寄存器)设置参数,			2.然后通过中断或者其他方式跳转到被调用代码的起始处进行执行,			3.被调用代码从指定位置去到参数,			4.处理完毕之后再将结果放到指定的位置,		5.最后应用再到指定的地方取回结果,调用完毕ABI 与 程序正常编译和运行需要考虑的事情	ABI 规范了 编译 和 运行		编译时,			.so存放位置属于abi规定的范围,用于编译时连接		运行时			存放参数和结果的位置属于abi规定的范围,			被调用程序的跳转地址或者中断号码也是abi规定的范围。//如果存取参数、结果的位置没有明确的规范,或者调用、被调用双方没有遵照统一个规范,那么这个调用能够根本就不可能成功ABI是一种标准,OABI 和EABI 分别是标准的不同实现(都是ARM相关的,OABI是老实现,EABI是新实现)	x86及其他架构也有对ABI的实现,甚至powerpc也实现了一个ABI,名字也叫做EABI(和ARM的EABI一点关系都没有)EABI	Embedded application binary interface, 即嵌入式应用二进制接口,	是描述可连接目标代码,库目标代码,可执行文件影像,如何连接,执行和调试,以及目标代码生成过程的规范.	是c,c++语言接口的规范	是编译连接工具的基础规范	arm的EABI迄今为止没有完全订好。	EABI的组成部分		过程调用规范		可执行文件格式规范		c/c++ ABI规范		调试格式规范What is EABI?GNU EABI is a new application binary interface (ABI) for Linux. It is part of a new family of ABI's from ARM� Ltd. known in the arm-linux community as EABI (or sometimes Embedded ABI).How do I use EABI?To use EABI, you'll need:A linux kernel that supports EABI. All BitsyG5 kernels and boards that run the latest 2.6 kernel are configured with EABI support enabled. You can boot these kernels from an ATA flash card or on-board flash just as you would our regular kernels.An EABI root file system based on ADS' new Debian port which is available for download here.You can install this root on an NFS server or harddrive, just as you would our regular full Debian distribution.The root file system includes an arm-linux-gnueabi toolchain which you can use to recompile your own source code.// https://developer.android.google.cn/ndk/guides/abis// https://www.jianshu.com/p/59f7c41085d0
你可能感兴趣的文章
出现An internal error occurred during: "Building workspace".的解决方法
查看>>
ext4.2入门简单小例子(button的事件--对话框的几种使用情况)
查看>>
nodejs:在windows系统中安装node.js 及第一个程序Hello World
查看>>
ExtJS 4.2心得和总结:布局系统详解(Ext.layout.container)
查看>>
数据结构几种排序算法详解和总结(java版)
查看>>
ExtJS4.2 登陆表单(Login)简单示例
查看>>
Node.js快速入门
查看>>
Node.js进行Web开发(一)--Express,路由控制,模板引擎
查看>>
阿里巴巴集团2014秋季校园招聘笔试题
查看>>
2014校园招聘_百度2014校园招聘
查看>>
2014校园招聘_华为2014校园招聘
查看>>
2014校园招聘_腾讯2014校园招聘
查看>>
ExtJs4.2学习--Ext.tab.Panel 选项卡
查看>>
mybatis+spring+struts2框架整合
查看>>
你真正理解java的字符类型了吗?(bit,byte,short,int等字符类型)
查看>>
数据挖掘开源软件:WEKA基础操作
查看>>
Python一些容易忽略的知识
查看>>
Ubuntu(-13.10)中安装JDK图文详解教程
查看>>
Hadoop2.2.0单节点安装和配置环境图文详解
查看>>
数据挖掘学习笔记--决策树C4.5
查看>>