树莓派上让人着急的资源使得我们需要把耗费大量时间的编译部分放到我们自己的PC上进行,但是由于处理器芯片的指令类型不一致,我们需要一个编译环境使得能够生成对应于树莓派arm指令的执行程序。参照网上的教程,下面给出具体的步骤。
器材
硬件
- 实验主板一块,本实验采用raspberrypi(树莓派);
- 5V/1A电源一个;
- microUSB线一根;
自备器材:
- PC(Linux系统)一台;
- ENDUP无线USB网卡
软件
- 交叉编译链
- 任意传输文件的方式
步骤
1. 交叉编译
由于在Windows的环境下进行交叉编译会比较复杂,网上的教程也不是很详细,所以建议在Linux中完成任务。Windows的用户可以在Virtual Box或VMware等虚拟机中进行交叉编译的尝试。如果对Linux有兴趣的话可以装双系统。
这里我们采用虚拟机下Ubuntu来搭建。
我们全程使用超级账户root进行操作。首先下载最新的编译工具包:
git clone git://github.com/raspberrypi/tools.git这里网速不佳的同学要多等一下。完成后进入tools文件夹,把里面的文件夹安装到 /opt 文件夹下面。
cp -r arm-bcm2708hardfp-linux-gnueabi /opt然后需要配置默认路径,加入编译工具路径。
export PATH=/opt/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin:$PATH还需要配置编译参数。
export CFLAGS="-O2 -pipe -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -w"至此交叉编译环境配置完成,下面我们来进行测试。首先写一个简单的hello world并在里面加上浮点运算,如下图所示:
然后使用命令进行编译,得到输出文件a.out:
随后我们用ssh将文件传送到树莓派上,并用ssh登陆上去运行该文件:
可以看到浮点数的计算正确,编译正常通过,交叉编译环境搭建成功。
【补充】
很多同学在按上面步骤做完之后,还是发现没法自动补全出想要的命令,然后发现进入到目标目录,直接运行是会报错的,指出我们是没有运行的权限的,此时我们用ls -l的命令,可以看到这些文件的执行权限是没有的。那么我们使用命令:
sudo chmod 777 *
这样就可以把所有的命令文件变为可执行。
版权声明:本文为justlethergo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。