交叉编译和ABI简介

交叉编译器允许在不同平台构建程序,常用于资源有限的设备或跨平台开发。ABI(Application Binary Interface)规定了程序如何在特定平台运行,包括函数调用、数据类型布局等。交叉编译涉及工具链,如GCC,需要考虑目标平台的硬件、系统和ABI。了解ABI对于编译器和链接器工作至关重要,确保不同程序间交互和正确运行。
摘要由CSDN通过智能技术生成


最近处理一个问题,需要在Ubuntu下使用GCC编译出多个平台版本做验证,发现对交叉编译这块有点模糊。导致工作效率略受影响,因此打算学习一下。

交叉编译

交叉编译器(Cross Compiler)就是一个可以编译在别的平台运行的程序的编译器。例如在Windows上编译安卓APK的编译器就是交叉编译器。
在交叉编译中,通常将编译可执行文件或者库文件的机器称之为构建平台,而将这些可执行文件或者库文件运行的平台称为宿主平台。
导致交叉编译器出现主要有一下几个原因:

  1. 某些设备资源有限无法运行编译器,例如8051单片机,显然不能指望它自己编译程序,它的资源有限到甚至系统都没有;
  2. 需要对一套代码编译出在不同平台运行的版本,比如你想让你的程序可以运行在Windows,Ubuntu,Mac等不同系统,又不想在每一种上配置一遍编译环境;
  3. 可以多台机器联合编译,提高效率;
  4. 为刚出现的机器编译它的系统和编译器等。

交叉编译器,并不是仅仅只有一个编译器,他还涉及链接器、调试器、标准库等等,这些统称为工具链。
在GNU中,对交叉编译器的命名有一个非强制的约定,交叉编译器的命名形式为:name-arch-[vendor]-os-[abi] (os = system / kernel-system),例如gcc-arm-linux-gnueabi就是编译的目标平台是基于AMR芯片的Linux上,由于这个名字只是个约定,因此并不是大家都遵守。可能顺序上有些不同,例如可能vendorh会在arch之前。但是一般

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值