文章目录

  • 1、交叉编译的概念
  • 2、树莓派的交叉编译
    • 2.1、交叉编译工具的下载
    • 2.2、交叉编译工具导入环境变量
    • 2.3、带WiringPi的交叉编译

1、交叉编译的概念

交叉编译是指在一个平台上编译出能够运行在另一个平台运行的程序,这个过程叫做交叉编译。例如,Window Intel平台编译出运行于Linux ARM平台的程序。要能够实现交叉编译,需要交叉编译工具,或者叫做交叉编译工具链。

为什么需要交叉编译?
1、目标平台的空间不够,无法安装编译器。
2、有时候目标平台即使硬件资源丰富支持安装编译器,但是上面没有操作系统,更谈不上编译。因此也需要提前交叉编译好操作系统给到目标平台上。

2、树莓派的交叉编译

2.1、交叉编译工具的下载

https://github.com/raspberrypi

到这个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

生成的可执行文件便可以在树莓派上运行。

树莓派开发 --- 交叉编译工具相关推荐

  1. 树莓派学习笔记——交叉编译工具链

    0.前言 [1]为什么要使用交叉编译     交叉编译工具较快开发的速度.树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件.于此同时,PC机上也可使用gcc工具链生成可执行代码 ...

  2. 交叉编译及树莓派(或其他平台)交叉编译工具链的安装

    交叉编译是什么: 交叉编译是一个行为,是在一个平台上生成另一个平台上的可执行代码. 比如:我们在windows上面编写C51的代码,并编译成可执行代码,如xx.hex,是在C51上面运行不是在wind ...

  3. 树莓派底层开发-----交叉编译

    目录 1.交叉编译 1.交叉编译 2.为什么要交叉编译? 3.交叉编译工具链的安装 1.临时有效配置环境变量(临时配置的话我们再开个窗口就没用了) 2.永久有效配置环境变量 1.交叉编译 1.交叉编译 ...

  4. 在ubuntu用arm ds-5社区版配合linaro交叉编译工具开发android linux应用

    下载开发工具arm ds-5社区版,并安装 下载交叉编译工具linaro, 也可以使用ds-5自带的交叉编译工具链(需要旗舰版本), sourcery , Android NDK bundle或者自行 ...

  5. 树莓派 交叉编译工具链的安装

    1.交叉编译是什么: 2.为什么要交叉编译? 3.交叉编译需要用到什么工具? 4..交叉编译工具链的安装 4.1临时有效 4.2永久有效 安装流程: 1.用file Zilla将tools-maste ...

  6. 在Linux下使用树莓派交叉编译工具编译opencv库并进行移植

    一.交叉编译opencv 继上一篇博客:"在Linux下配置opencv"之后,我以为直接将编译命令:g++ `pkg-config --cflags opencv` -o Tes ...

  7. 嵌入式Linux开发环境搭建-(4)安装交叉编译工具链

    在ubuntu16.04.2中,安装交叉编译工具链 在ubuntu中进行嵌入式应用程序开发,安装交叉编译工具链是不可缺少的一个环节. PC操作系统:ubuntu16.04.2 LTS 开发板:天嵌科技 ...

  8. java交叉编译安卓可用,Android开发实践:Android交叉编译工具链的使用

    前面2篇文章分别介绍了Android NDK编译的命令行参数,以及如何在任意目录使用Android.mk来编译本地c/c++代码,Andriod.mk和ndk-build只不过是Android官方提供 ...

  9. 香橙派嵌入式arm开发板下载交叉编译工具链说明

    香橙派开发板以处理器分类,包含全志H2.全志H3.全志H5.全志H6等系列,下文以全志H3芯片的开发板为例,对交叉编译工具链的下载进行说明: 1) orangepi-build第一次运行的时候会自动下 ...

最新文章

  1. photoshop cs3反应慢的原因
  2. OS / Linux / clone、fork、vfork 与 pthread_create 创建线程有何不同
  3. Java 的插件框架 PF4J
  4. leetcode45 --- jump
  5. HDU 1686 Oulipo【kmp求子串出现的次数】
  6. 网站制作---eWebeditor不兼容IE8问题的解决方法
  7. Entity Framework 6.x - Code First 默认创建数据库的位置
  8. 利用gp自己做的生成缓冲区的代码
  9. 分层模型中数据传输过程
  10. 五分钟搭建 Flash 视频直播站
  11. dev gridcontrol 单箱效果
  12. 【操作系统】代码实践:先来先服务调度算法(FCFS),短进程优先调度算法(SJF),高响应比优先调度算法(HRRN)
  13. Android APK反编译就这么简单 详解(附图)
  14. 前端微信公众号开发,前端开发规范手册
  15. 项目组合、项目集、项目管理实践经验及思考
  16. 硬件电路之运算放大器3--比较器和跟随器
  17. slic codec
  18. 制作QQ微信支付宝三合一收款码
  19. 【洛谷刷题笔记】P4093 [HEOI2016/TJOI2016] 序列
  20. 使用pytorch模型学习框架easyocr模块识别行程码图片文字并使用Flask Web返回指定信息json字符串

热门文章

  1. webGL编程指南实战教程
  2. 大数据编程技术——期末复习
  3. #发现好游戏——Unheard
  4. python中常量池和堆_常量池和堆的区别
  5. 怎么买电影票更便宜?
  6. 怎么保存在界面输入的内容_【商学院】抖音长视频怎么发朋友圈?
  7. 数据可视化发现[吃鸡]秘密
  8. MVC过滤器-AOP思想初探
  9. 导出office文件中所有图片
  10. 小区物业管理系统-业主页面编写