系统环境:使用的ubuntu16.04的系统
硬件:使用的树莓派3B
工具安装
必要的环境支持工具
这一步一定不能省略,我就是在这一步省略掉然后环境死活配不成功
sudo apt-get install libc6-armel-cross libc6-dev-armel-cross
sudo apt-get install binutils-arm-linux-gnueabi
sudo apt-get install libncurses5-dev
交叉工具链下载
可以直接去网站下载
https://github.com/raspberrypi/tools
或者通过命令的方式进行下载
git clone https://github.com/raspberrypi/tools.git
在arm-bcm2708文件夹下可以看到6个不同版本的交叉工具链
arm-bcm2708hardfp-linux-gnueabi
arm-linux-gnueabihf
gcc-linaro-arm-linux-gnueabihf-raspbian
arm-bcm2708-linux-gnueabi
arm-rpi-4.9.3-linux-gnueabihf
gcc-linaro-arm-linux-gnueabihf-raspbian-x64
其中arm-rpi-4.9.3-linux-gnueabihf和gcc-linaro-arm-linux-gnueabihf-raspbian-x64是64位机器用的,每一个交叉编译工具的目录下都有bin目录进入,执行./arm-linux-gnueabihf-gcc -v可查看gcc版本。
加入环境变量
sudo gedit ~/.bashrc
输入
export PATH="/home/qc/dl/RPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH"
export PATH="/home/qc/dl/RPI/tools-master/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin:$PATH"
使环境变量生效
source ~/.bashrc
测试环境变量是否生效
arm-linux-gnueabihf-gcc -v
输出内容如上,则安装成功
测试
编写简单的测试文件,将文件进行编译并且在本机无法进行运行,在树莓派可以正常运行则表示交叉编译工具链编译成功。
测试程序
hello.c测试功能:实现简单的计算输出浮点数以及字符串
#include <stdio.h>
int main(void)
{
float pi = 3.14;
printf("Hello World\n");
printf("%.2f\n",2*pi);
}
编译命令
arm-linux-gnueabihf-gcc hello.c -o hello
在本机执行
将可执行程序拷贝到树莓派上
chmod +x hello #赋予hello执行文件以权限
./hello #程序执行