树莓派交叉编译

1.交叉编译的概念

  • 什么是交叉编译?

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

如:          

1. 在window上编写C51的代码并编译成可执行文件,但放在了C51单片机上运行而不是放在在window上运行。

2.在ubuntu上编写树莓派的代码并编译成可执行文件,是在树莓派上运行,不是在Ubuntu上运行。       

  •  为什么要交叉编译

      1.平台上不允许或不能安装我们所需的编译器

      2.目的平台的资源贫乏无法运行我们所需的编译器

      3.目的平台未建立,连操作系统都没有,根本谈不上运行编译器

2.交叉编译工具链的安装

  1.下载工具链:raspberrypi/tools (github.com)

   

 2.把下载的包放到 ubuntu 上,并解压:

unzip tools-master.zip

 解压完毕得到文件:

3.进入到 /home/clc/SYSTEM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 目录下:

 arm-linux-gnueabihf-gcc 就是我们要找的交叉编译工具 

 此时我们只能在这个目录中进行编译,为了让编译工具能在其他目录中进行编译,需要配置环境变量。

4.配置环境变量

  • echo $PATH  显示当下的环境变量值
  • pwd 显示交叉编译工作的路径(/home/clc/SYSTEM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin)
  • 配置环境变量:

export   PATH = 当下的环境变量值+交叉编译工作的路径

 配置完成后,我们就能在其他目录中进行编译。此时只能在这个窗口进行编译,当我们重新打开一个新的窗口又不能在其他目录中编译了。为了让编译工具能永久有效的在其他目录中进行编译,需要修改工作目录下的 .bashrc 隐藏文件

vi   /home/clc/.bashrc 

 在文件的最后加上配置好的环境变量     

修改好之后,生效一下配置:

source  /home/clc/.bashrc           // 加载配置文件,马上生效配置

这样,不管我们打开多少个窗口都可以在其他目录中使用交叉编译工具。

3.交叉编译的使用

  1.检查交叉编译工具

arm-linux-gnueabihf-gcc -v (4.8.3的版本)

  2.交叉编译  

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

  3.把编译生成的可执行文件发到树莓派上 

 scp  clientInPi  pi@192.168.100.3:/home/pi

 指令   文件名   开发板用户名@开发板地址:开发板的绝对路径

  4.带wiringPi库的交叉编译如何进行   

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

  • 通过-I  -L来指定

  但现在因为链接的库的格式不对,格式是宿主机(X86)的平台,使用时出现以下错误 :

 所以需要把树莓派的wiringPi的库拿过来用。

   1. 使用scp指令将树莓派的 wiringPi 库传到 ubuntu上

scp  /usr/lib/libwiringPi.so.2.50  clc@192.168.100.3:/home/clc/pi

    2. 将库传到树莓派之后,为其创建软链接

 ln -s libwiringPi.so.2.50 libwiringPi.so

    3. 交叉编译得到ARM平台的可执行程序

arm-linux-gnueabihf-gcc relay.c -I /home/clc/PI/WiringPi/wiringPi -L ./ -lwiringPi -o armpi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值