交叉编译——

什么是交叉编译

交叉编译 是在一个平台上生成临海一个平台可执行代码.

eg.在windows上面编写C51代码,并编译生成可执行代码。如xx.hex

我们在Ubuntu上编写树莓派的代码,并编译成可执行代码。a.out.

是在树莓派上运行,不在Ubuntu Linux上面运行。

编译:在一个平台上生成该平台上的可执行代码

为什么交叉编译

平台上不允许或不能够安装我们所需要的编译器,如C51

1、平台资源匮乏,无法运行所需要的编译器

2、树莓派也需要交叉编译,、树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。操作系统也是代码,也要编译!

平台运行需要至少两样东西:boot loader 以及操作系统核心

宿主机(host)编辑和编译程序的平台,一般是基于X86的pc机,也被称为主机

目标机(target)用户开发的系统,通常是非x86平台。host编辑得到可执行的代码在target上运行

交叉编译工具链配置

关于编译

编译是指将源代码文件(如C/C++文件)经过预处理编译汇编链接等步骤,转换为可执行文件的过 程。将源代码转换成机器代码的过程称为编译(Compile),编译的工作需要编译器(Complier)来完成

本地编译

本地编译是指在当前的编译平台上,生成能在当前平台上运行的可执行文件

交叉编译

交叉编译是指在当前的编译平台上,生成能在体系结构不同的另一种目标平台上运行的可执行文件。

环境配置

想要在x86平台上进行交叉编译,并在ARM平台上运行这个程序。首先需要在家目录下的.bashrc最后配 置添加交叉编译工具链:

export PATH=$PATH://home/pg/Desktop/orange-build/orangepi-build/toolchains/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin

在x86平台可以编译出arm平台的 

aarch64-none-linux-gnu-gcc -o hello1 hello.c 

用file查看文件编译出来的程序是ARM aarch64的二进制程序

pg@pg:~/Desktop$ file hello1
hello1: 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, with debug_info, not stripped

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值