700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 树莓派12:交叉编译的概念 交叉编译工具链安装 项目运行

树莓派12:交叉编译的概念 交叉编译工具链安装 项目运行

时间:2024-01-06 11:20:10

相关推荐

树莓派12:交叉编译的概念 交叉编译工具链安装 项目运行

交叉编译的概念,工具链安装,项目运行

1.交叉编译的概念

交叉编译是什么?

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

交叉编译:是在一个平台上生成另一个平台上的可执行代码

(我们在windows上面编写C51代码,并编译成可执行代码,xx.hex,但在c51上面运行,不在windows上运行)

(我们需要在linux上面编写树莓派代码,并编译成可执行代码,如:a.out,但在树莓派上运行,不在linux上运行)

C51,STM32:交叉编译发生在keil(集成环境上面)

既然我们已经有了主机编译器,那为什么还要交叉编译呢?

有时是因为目的平台上不允许或不能够安装我们所需要的编译器,

比如:C51

1.因为目的平台上的资源贫乏,无法运行我们所需要编译器

2.因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。操作系统也是代码,也要编译。

既然可以交叉编译,那还要主机编译干吗?

交叉编译是不得已而为之!与主机编译相比,交叉编译受的限制更多,虽然在理论上我们可以做任何形式的交叉编译,但事实上,由于受到专利、版权、技术的限制,并不总是能够进行交叉编译,尤其是在业余条件下!举例来说,我们至今无法生成惠普公司专有的som格式的可执行文件,因此我们根本无法做目的平台为HPPA-HPUX的交叉编译。

平台运行需要至少两样东西:

bootloader(启动引导代码)以及操作系统核心

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

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

交叉编译需要用到的工具?

交叉编译器(交叉编译工具链)

2.树莓派(或者其它平台)交叉编译工具链的安装

交叉编译工具链的安装

举例:使用keil进行编译的时候需要对交叉编译器(交叉编译工具链)进行选型,C51,STM32;

代码的移植性高:是指一段代码编译后可以在不同的平台上运行;比如:C51,STM32,代码的修改部分不是很多

我们需要用到树莓派的交叉工具链:

下载网址:

树莓派交叉编译工具链

tools----code

将Windows下的压缩包拉至Linux下,并移动到建好的pi文件夹

//也可以从共享文件夹拷贝到工作目录

在终端执行以下操作:

cd pi //进入文件夹,ls//显示 tools-master.zipunzip tools-master //解压文件夹。。。//等待cd tools-masterls //显示文件夹cd arm-bcm2708 lscd gcc-linaro-arm-linux-gnueabihf-raspbian//选择32位编辑器lscd binls //可以看到一堆绿色的可执行文件./arm-linux-gnueabihf-gcc -v //去执行该文件//---------------过程太过繁琐//1.临时有效:配置环境变量//PATH 环境变量:目的是省去敲写前面的乱七八糟的文件夹echo $PATH //接下来配置环境变量pwd //显示当前绝对路径PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/dazai/pi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin//配置环境变量cd//回到根目录arm-linux-gnueabihf-gcc -v //用来编译树莓派可执行文件//二gcc是用来编译本地可执行文件//之所以是临时,是因为如果你再打开一个终端窗口,就木得了2.永久有效:修改.bashrc 隐藏文件修改工作目录下的.bashrc 隐藏文件,配置命令终端的//在根目录下:cdvi .bashrc //或者gedit .bashrc//将:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/dazai/pi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin//放到106行的fi下面//之后保存退出source .bashrc //使其生效//之后再打开任何一个终端窗口都含有(认识):arm-linux-gnueabihf-gcc

至此,树莓派编辑器(交叉编译工具链),安装完成。

3.交叉编译服务器客户端

一个简单的程序:

#include <stdio.h>int main(){printf("hello\n");return 0;}

gcc text.c -o text_1//编译file text_1 //查看编译后的文件可执行在哪些系统上

怎样把text.c放到树莓派上去运行,我们用到交叉编译工具:

arm-linux-gnueabihf-gcc text.c -o text_2file text_2

将text_2可执行文件复制到树莓派操作系统

linux终端下:

scp text_2 pi@192.168.1.100: //注意: 后面跟路径,可以不写//密码:raspberry

树莓派操作系统下:

通过以上交叉编译,可实现将上位机书写的程序编译成树莓派能够运行的可执行程序

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。