当前位置:   article > 正文

ARM交叉编译

arm交叉编译

1.什么是交叉编译

编译与执行,编译与执行必须在同一个平台才可以进行正确的执行,我们常见的硬件平台为X86、ARM、MIPS等,

一般我们将嵌入式设备称为目标机,我们自己的电脑称为宿主机,这里就涉及一个问题,目标机(一般为ARM)与宿主机(一般为x86)的硬件平台是不同的,因此涉及到在宿主机上编译目标机上可执行的程序,这就涉及到交叉编译,即在宿主机上编译,在目标机上执行。

2.为何需要交叉编译?

为何需要交叉编译,在目标机上编译执行不可以吗,当然可以,只不过对于嵌入式设备,一般为基于arm的嵌入式设备,但是嵌入式设备的资源较少,ram与flash等资源比较少,因此一般只是将可执行文件放在目标机执行。

3.交叉编译链如何获取?

编译链是如何制作的,编译链主要由三个开源库生成:gcc库、binutils库、Glibc库;
gcc库:主要负责编译的第一阶段预编译与第二阶段编译生成汇编代码;gcc官网可以进行gcc源码下载https://gcc.gnu.org/
binutils库:主要负责编译的阶段三汇编与阶段四链接最终生成可执行文件,主要包括as、ld、objdump、readelf等工具,binutils主要实现汇编、链接等过程https://ftp.gnu.org/gnu/binutils/
Glibc库:Glibc为C标准库,生成C的标准静态库与动态库,供C语言进行调用;如printf、read、open等;glibc为linux下c的标准库,源码下载地址: http://www.gnu.org/software/libc/
交叉编译链获取方式:
1.通过以上工具进行共同编译生成,难度较大,主要涉及编译、各个库的对齐等;
2.通过ARM官网获取编译好的交叉编译链: https://developer.arm.com/downloads/-/gnu-rm

//使用gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
aarch64-none-linux-gnu  bin  include  lib  lib64  libexec  share
  • 1
  • 2

编译链解压后便可以直接使用,主要如果需要在全局使用,需要将目录加入到全局环境变量中:
vim ~/.bashrc ,加入本机的交叉编译链的路径;
在这里插入图片描述

4.具体说明编译与编译

源代码:

//test.c
#include <stdio.h>

int main(int argc,char *argv[])
{
    int a = 0,b = 1;
    int sum;
    sum = a + b;
 
    printf("sum = %d\n",sum);
 
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4.1.X86编译

gcc test.c
//执行file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, 
interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32,
BuildID[sha1]=506004a453489535b56dc188a684aedf65a4a462, not stripped

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.2.X86平台交叉编译ARM生成可执行文件

//使用ARM64编译链
aarch64-none-linux-gnu-gcc test.c
//file a.out
a.out: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically
linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, not stripped

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用file指令可以查看可执行文件的属性,使用交叉编译链可以生成ARM平台的可执行文件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/282344
推荐阅读
相关标签
  

闽ICP备14008679号