raspbian上自带了gcc工具,如果有程序的源码,可以直接在小Pi上运行,但是限于SD卡和CPU的速度,这种方式用来编译小体积的软件可能比较方便,但是如果在台式机上make也要等待一小时多,在Pi上花费的时间就更是可想而知了,下面回顾一下自己的交叉编译环境的测试:
1.下载编译环境
RaspBerry提供现成的Linux内核和编译系统,在github上可以直接下载,我们只需要编译环境,所以下载tools:
$git clone --depth=1 https://github.com/raspberrypi/tools
我是在公司网下载的,速度在500K以上,总共下载完有近1G的大小
2.编译一个hello world程序
//helo.c
#include <stdio.h>
int main()
{
printf("hello world\n");
}
//Makefile
ARMPATH=/root/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
CC=${ARMPATH}/arm-linux-gnueabihf-gcc
all: hello.c
${CC} -o hello hello.c
我将tools下载到/root/raspi下面,所以路径如上配置
(tools/arm-bcm2708下面有四个目录
arm-bcm2708-linux-gnueabi/
gcc-linaro-arm-linux-gnueabihf-raspbian/
arm-bcm2708hardfp-linux-gnueabi/
gcc-linaro-arm-linux-gnueabihf-raspbian-x64/)
具体每个目录对应的是哪种类型的编译器,目的是什么,只能去Google一下,我也没有看到哪里有说明,可能还是太过笼统了
#make
/root/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc -o hello hello.c
#file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=5aec6d75264a104fdb1a13e5f964e8bf7b85c63a, not stripped
将已经编译完的hello程序共享到Pi上,运行
pi@raspberrypi ~/download $ ./hello
hello world
说明我们的编译环境是没有问题的,以后有需要在Pi上测试程序,都可以在Linux上预先编译了。