Linux交叉编译并不是特别深奥的东西

一、什么是交叉编译

       交叉编译指在一个平台上生成另一个平台可执行的代码。比如我们学51的时候,在Windows上生成 .hex 十六进制文件,下载给51单片机执行,而交叉编译的过程发生在Keil软件或在IAR软件上。其实交叉编译早在我们学51的时候就涉及到了,只是我们不太去关注这些东西。

二、为什么要交叉编译

       至于为什么要交叉编译,主要有两个原因;
       1. 目标平台上不能够安装或者运行编译器,需要在带有编译器的平台进行交叉编译。比如51单片机和一些32位的单片机,连个gcc 都装不了,就需要交叉编译;
       2. 目标平台还没有操作系统,没办法自主安装编译器。比如没有操作系统的树莓派,就需要交叉编译来生成内核系统。
       因此,树莓派也是需要交叉编译的,因平台的运行至少需要bootloader 和系统核心。

宿主机和目标机

宿主机(host): 编译和编译程序的平台,一般是X86的PC机,也称为主机;
目标机(targer): 用户开发的系统,通常是非X86的平台,host上编译得到的可执行代码在targer上运行。
       两者的关系 就和Windows开发51单片机一样,Windows便是宿主机host,51芯片就是目标机 targer。

三、交叉编译工具链的安装

       先下载交叉编译工具,可以去github上下载:https://github.com/raspberrypi/tools,点击“Code” 下的“Download ZIP”,如果嫌弃下载慢的话,也可以下载我的资源: 交叉编译工具
       下载完之后,先重命名一下,把中文都删了,然后放到虚拟机中,最好放到工作目录。使用

unzip  tools-master.zip

来解压,解压好之后应该是有个 tools-master 文件夹,我把它移到了隐藏文件中,所以我的文件夹是 .tools-master
在这里插入图片描述
交叉编译工具链 “arm-linux-gnueabihf-” 就在 tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 目录下:
在这里插入图片描述

交叉环境变量的配置

       为了方便且长久地使用交叉编译工具链 “arm-linux-gnueabihf-”,需要对PATH环境变量进行配置。在工作目录下打开 .bashrc文件,在文件最后加入:

xport PATH=$PATH:/home/seahi/Desktop/Linux/.tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

这个路径各不相同,可以在 “arm-linux-gnueabihf-” 所在目录 用“pwd”指令获得该目录,使用

arm-linux-gnueabihf-gcc -v 

来判断是否安装完成:
在这里插入图片描述
能出来这样地信息,证明交叉编译工具链安装完毕。

四、交叉编译树莓派运行地程序

       我之前写过一个小型FTP文件服务器程序,它在虚拟机的运行结果是这样的:
在这里插入图片描述
支持服务器支持多客户端下载和上传文件,浏览文件,和获取路径。现在我把客户端交叉编译到树莓派运行:
在这里插入图片描述
使用 **“scp pi@树莓派的ip地址:树莓派已有的路径”**发送到树莓派。看一下运行结果:

在这里插入图片描述
树莓派的交叉编译还会涉及到动态库,但是动态库的编译我还没学,以后学深入的时候,我在写博客记录一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值