文章目录
- 1、交叉编译的概念
- 2、树莓派的交叉编译
-
- 2.1、交叉编译工具的下载
- 2.2、交叉编译工具导入环境变量
- 2.3、带WiringPi的交叉编译
1、交叉编译的概念
交叉编译是指在一个平台上编译出能够运行在另一个平台运行的程序,这个过程叫做交叉编译。例如,Window Intel平台编译出运行于Linux ARM平台的程序。要能够实现交叉编译,需要交叉编译工具,或者叫做交叉编译工具链。
为什么需要交叉编译?
1、目标平台的空间不够,无法安装编译器。
2、有时候目标平台即使硬件资源丰富支持安装编译器,但是上面没有操作系统,更谈不上编译。因此也需要提前交叉编译好操作系统给到目标平台上。
2、树莓派的交叉编译
2.1、交叉编译工具的下载
https://github.com/raspberrypi
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3IGO1MWMyQGO0M2Y2Y2YhJjM1QzNwADZ3YjN5IGOlV2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
到这个tools下下载交叉编译工具。
2.2、交叉编译工具导入环境变量
1、将下载好的交叉编译工具链通过共享文件夹拷贝到虚拟机上并解压
2、将交叉编译工具链的路径导入到环境变量
例如我这里是:
cd /home/CLC/Raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
如果是希望临时有效,可以通过export命令添加环境变量
export PATH=$PATH:/home/CLC/Raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
如果希望为当前用户永久生效,则可以修改.bashrc文件
vi ~/.bashrc
末尾添加export内容
输入
source ~/.bashrc
生效
最后输入命令,查看交叉编译工具链版本号,如果有打印版本号信息,则代表交叉编译工具链导入成功。
arm-linux-gnueabihf-gcc -v
2.3、带WiringPi的交叉编译
如果要在虚拟机下实现带WiringPi库的编译,其中一个方法就是把树莓派的wiringpi库放到虚拟机下。
树莓派wiringpi库在
/usr/lib
下。
第一步:通过scp命令将so文件上传到虚拟机。
第二步:下载WiringPi库文件到虚拟机,里面会包含一些WiringPi的头文件声明。
例如我的是这样:
WiringPi头文件声明路径:
.so的路径:
因此,编译的时候,需要指定.so的路径和头文件的路径。
参考指令如下:
arm-linux-gnueabihf-gcc gpio_relay.c -o gpio_relay -I ../WiringPi/WiringPi/ -L .. -lwiringPi
生成的可执行文件便可以在树莓派上运行。