树莓派——交叉编译

一、交叉编译是什么,为什么要交叉编译

    • 交叉编译与编译

  1. 交叉编译:

  1. 是在一个平台上生成另一平台上的可执行代码。

  1. 我们在Windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在51上运行,不是在Windows上面运行

  1. 我们在Ubuntu上面编写树莓派代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在Ubuntu Linux上面运行。

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

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

  1. 是在一个平台上生成在该平台上的可执行代码

    • 为什么要用交叉编译

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

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

  1. 树莓派是不是就不需要交叉编译?

因为平台运行需要至少两样东西:BootLoader(启动引导代码)以及操作系统核心,所以有时因为目的平台还没有建立,练操作系统都没有,根本谈不上运行编译器,对操作系统的编译;

二、使用交叉编译前的准备

    • 交叉编译工具的安装

对于pi3b以下的可以使用GitHub上官方发布的交叉编译工具;

对于pi4b来说,GitHub上的版本较低,当使用wiringPi进行交叉编译时会报错,所以需要自行进行交叉编译工具的安装。

    • 环境变量的更改

  1. 进入装有交叉编译工具的可执行文件的文件夹下并显示出当前路径

  1. 然后进入用户目录,并打开.bashrc文件,在最后一行添加export指令,并保存退出

export PATH=/opt/cross-pi-gcc-bin:$PATH
  1. 此时重启虚拟机或者输出source .bashrc指令加载配置文件。

  1. 此时交叉编译工具就已经准备好了,下来就进行测试

arm-linux-gnueabihf-gcc  xxx.c -o xxx

交叉编译完成后将可执行文件通过scp指令传到树莓派上进行测试

scp clientInPi pi@192.168.43.30:/home/pi
指令  文件名  开发板用户名@开发板地址:开发板的绝对路径

三、带wiringPi库的交叉编译如何进行

注:当我们使用的库不属于arm架构的话,我们进行交叉编译的时候会报错

  1. 正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。

  1. 由于我们的头文件、库都是使用的工作目下的,所以我们需要通过-I 指定从那个路径开始读取头文件,-L指定从那个路径开始读取库。

arm-linux-gnueabihf-gcc demo2.c -I /home/yq/lessonPI/WiringPi/wiringPi -L. -lwiringPi
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值