1、配置RaspberryPi交叉编译环境:

在开发RaspberryPi Zero的过程中,由于Zero板卡的CPU的处理性能比较弱,因此其编译的性能比较弱,需要将代码在PC电脑上交叉编译完成之后再拷贝到Zero上调试运行。配置交叉编译环境的基本步骤如下所示:

Step1:从github网站获取raspberryPi交叉编译工具包:https://github.com/raspberrypi/tools

git clone git@github.com:raspberrypi/tools.git

上述文件下载完之后的内容如下所示(其中arm-bcm2708文件夹中的内容为交叉编译器)

Step2:将交叉编译器配置到环境变量:

编辑环境变量配置文件.bashrc,在文件的末尾添加如下的代码(注意路径,不同的路径记得修改):

export PATH=$PATH:~/Raspberry_Project/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

配置完成之后,需要执行source指令,让.bashrc生效:

source ~/.bashrc

Step3:测试交叉编译环境

如下图所示,在ubuntu命令行中输入如下指令:

arm-linux-gnueabihf-gcc -v

有此图说明配置成功。

2、交叉编译执行main.c文件:

Step1:编写了如下的测试文件:

 #include <stdio.h>

 int main(void)
{
printf("Test the cross-compile-env for raspberrypi!\n");
return ;
}

Step2:使用如下的指令编译上述文件:

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

编译的结果如下:

将编译生成的main文件拷贝到树莓派上,修改执行权限,执行即可。

3、交叉编译过程中需要链接第三方的库文件:

在编写程序的过程中,我们需要使用到wiringPi库相关的内容,因此需要将wiringPi的文件引入。

Step1:首先下载wiringPi的程序包:https://github.com/mm1994uestc/WiringPi。可以通过github直接下载源代码:

git clone git@github.com:mm1994uestc/WiringPi.git

下载完成之后进入文件夹安装wiringPi的库,安装方法参考这里:https://www.cnblogs.com/uestc-mm/p/6290521.html

注:安装过程中如果出现问题,请使用sudo权限操作,sudo make install

重点:将wiringPi安装在树莓派之后,我们可以在其编译文件夹下面找到编译成功的wiringPi库程序或者安装在/usr/lib当中,如下所示:

libwiringPi是基本的wiringPi程序库

我们可以将这些文件拷贝到Ubuntu环境下,为交叉编译做好准备,如下所示:

a. devLib:Raspberry basical hardware driv.

b. examples:Some examples for the wiringPi Lib.

c. gpio:gpio demo to show the control of gpio.

d. libwiringPi.so:Baisic wiringpi library usefull when you are compile the c code.

e. main:Executiable file for Raspberry.

f. main.c:The c source code.

g. Makefile:Used to compile the C Code into executibale binary file.

h. wiringPi:The source Code of wiringPi(include .c & .h file),when you are compile the code,it needed.

i. wiringPiD:Other devices Library Source Code if you used it,you need to include the lib and .h file.

Step2:安装拷贝完成之后我们编写如下的程序:

#include <stdio.h>
#include <stdlib.h>
#include "wiringPi.h" int main(int argc, char **argv)
{
if(argc<){
printf("You should give a param while call the program1\n");
return ;
}
int pinNumber = atoi(argv[]);
printf("The control pin number is:%d\n",pinNumber);
if(- == wiringPiSetup()){
printf("Setup wiringPi failed!\n");
return ;
}
pinMode(pinNumber, OUTPUT);
while(){
digitalWrite(pinNumber,);
delay();
digitalWrite(pinNumber,);
delay();
}
printf("Hello, you do it succeed!!!\n");
return ;
}

Step3:编译上述程序,这里编写了简单的Makefile文件,如下所示:

main:main.c
arm-linux-gnueabihf-g++ main.c -o main -L. -lwiringPi -IwiringPi
clean:
rm main

注:这里的路径-I是wiringPi的安装路径。一定要应用wiringPi的相关文件的路径才能调用wiringPi的库,举一反三,其他的库也可以类似的方式,对于静态的library,我们可以使用-l的方式来链接,如果在RaspberryPi的本地,我们可以使用如下的方式(这里链接了math数学库&wiringPi库):

gcc -c main.c -o main -lwiringPi -lm

-L.的意义表示,程序调用的库在当前文件目录下,如果不再请举一反三,设置Library库的绝对路径。-I的意思是include的意思,将wiringPi的.h文件包括进来。

关于Makefile链接相关的内容参考这里:https://www.cnblogs.com/starf/p/3652563.html

Step4:make生成RaspberryPi的可执行文件,通过scp拷贝到Raspberry执行即可:

4、Reference:

交叉编译参考:https://www.cnblogs.com/xieyajie/p/4699724.html

wiringPi官网:http://wiringpi.com/

RaspberryPi交叉编译环境配置-Ubuntu & wiringPi & Qt的更多相关文章

  1. 开发环境配置--Ubuntu+Qt4+OpenCV(三)

    同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...

  2. 开发环境配置--Ubuntu+Qt4+OpenCV(一)

    同系列的文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV( ...

  3. 开发环境配置--Ubuntu+Qt4+OpenCV(二)

    同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...

  4. 学习记录:交叉编译环境配置(buildroot and gdb&gdbserver)【转】

    本文转载自:https://blog.csdn.net/zhy025907/article/details/52332528 1,背景 因为参加公司的路由器逆向培训,首先需要的就是环境的配置准备工作, ...

  5. 【cocos 2d-x】VS2013+cocos2d-x3.3Final+Adriod交叉编译环境配置(超详细版)

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.com ...

  6. MT7688交叉编译环境配置

    在ubuntu下设置MT7688交叉编译环境,用于编译mt7688下使用的程序 1.首先在vmware下安装ubuntu64位,由于交叉编译工具需要64位系统,此次安装的是ubuntu14 2.在ub ...

  7. [环境配置]Ubuntu 16.04 源码编译安装OpenCV-3.2.0+OpenCV_contrib-3.2.0及产生的问题

    1.OpenCV-3.2.0+OpenCV_contrib-3.2.0编译安装过程 1)下载官方要求的依赖包 GCC 4.4.x or later CMake 2.6 or higher Git GT ...

  8. 关于Linux的交叉编译环境配置中的问题

    Linux的交叉编译arm-linux-gcc搭建时,安装结束却无法查看版本.输入以下命令查看Ubuntu的版本: uname -a 可以看到此Ubuntu为64位16.04.1版本,所以需要下载32 ...

  9. [环境配置]Ubuntu 16.04+CUDA 9.0+OpenCV 3.2.0下编译基于Caffe的MobileNet-SSD踩过的一些坑

    SSD是Caffe的一个分支,源码在github上:https://github.com/weiliu89/caffe/tree/ssd $ git clone https://github.com/ ...

随机推荐

  1. rabbiit报错处理

    一.ping不同download.yunwei.edu 内网服务地址必须在前面 [root@localhost ~]# vim /etc/resolv.conf # Generated by Netw ...

  2. 2019.05.30 S4 BUPT BP 客户增强说明

    - 看了一圈,发现网上BUPT增强的很少,有的也是做一个字段的页签的增强,我自己花时间研究了一下,在BP增加新的interface 界面按钮. BP页签增强部分就不写了,大家看链接吧 加上如何做出新的 ...

  3. 微服务简介和SOA比较

    https://blog.csdn.net/chszs/article/details/78515231https://blog.csdn.net/wuxiaobingandbob/article/d ...

  4. Hibernate对象的状态分类

    对象的状态: 临时状态Transient: 与数据库没有对应,跟Session没有关联 一般是新new出的对象 持久化状态Persistent: 对象在Session的管理之中,最终会有对应的数据库记 ...

  5. Eclipse进行Debug时断点上有一个斜杠,并且debug没有停在断点处

    断点上有斜杠,这是由于设置了Skip All Breakpoints的缘故,调试会忽略所有断点,执行完,只需取消Skip All Breakpoints即可,操作:Run-->Skip All ...

  6. Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)

    1.磁盘分区: 1 以root身份登录 查看磁盘信息(自行选择需要使用的磁盘,此处只需要了解信息) fdisk –l 创建新硬盘 fdisk /dev/vdb (决定使用哪个磁盘) 输入n回车,再输入 ...

  7. 网络实验 03-交换机划分VLAN配置

    交换机划分VLAN配置 一.实验目标 理解虚拟 LAN(VLAN)基本原理 掌握一般交换机按端口划分 VLAN的配置方法 掌握Tag VLAN配置方法 二.实验背景 某一公司内财务部.销售部的PC通过 ...

  8. caoz的梦呓:创业公司如何做好信息安全

    猫宁!!! 参考链接:https://mp.weixin.qq.com/s/gCWjzHBRfbPFhNeg2VtFhA https://mp.weixin.qq.com/s/bmifCmD2CHV1 ...

  9. C#实现多线程的方式:使用Parallel类

    简介 在C#中实现多线程的另一个方式是使用Parallel类.  在.NET4中 ,另一个新增的抽象线程是Parallel类 .这个类定义了并行的for和foreach的 静态方法.在为 for和 f ...

  10. 第三周课程总结&实验报告一

    实验一 Java开发环境与简单Java程序 一.实验目的 熟悉JDK开发环境 熟练掌握结构化程序设计方法 二.实验内容 1.在此处输入标题打印输出所有的"水仙花数",所谓" ...