树莓派交叉编译

  • 什么是交叉编译?
  • 为什么要交叉编译?
  • 交叉编译要用到什么工具?
  • ubuntu交叉编译工具的安装、配置
  • 如何编译?
  • 带wiringPi库的交叉编译如何进行?
    • 引入软、硬链接
    • 软链接使用方式
    • 硬链接使用方式
    • 在ubuntu带库wiringPi编译

什么是交叉编译?

两种编译:

本地编译:在x86平台编译的可执行文件,仅在x86平台使用

交叉编译:是一个平台上生成另一个平台上的可执行代码

为什么要交叉编译?

宿主机:编辑和编译的平台,通常指x86平台
目标机:非x86平台,运行宿主机编译的代码

因为平台上的不允许或不能够安装我们需要的编译器

(1)目的平台上的资源匮乏(内存太小),许多硬件被设计成低成本、低功耗,无法运行我们需要的编译器(如C51)

(2)即使目标机有编译器,但是如果不进行交叉编译,编译的同样代码仅仅自己(和同平台)能跑,放在其它平台可能跑不了(移植性不好)

交叉编译就可以很好地解决这些问题

交叉编译要用到什么工具?

交叉编译工具链

ubuntu交叉编译工具的安装、配置

(1)下载交叉编译工具链:https://github.com/raspberrypi/

(2)从共享文件夹拷贝到当前目录(根据自己的实际需求):

cp /mnt/hgfs/share/tools-master.zip .

或者用客户端传输软件传到linux环境:例如FileZilla官网下载地址:https://www.filezilla.cn/
(3)解压

unzip tools-master.zip

(4)配置环境变量
bin目录下存放指令相关的文件

1、先进入解压后的tools-master的bin目录

cd /home/hhz/CrossCompilationTool/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

2、pwd获知当前路径信息
3、echo $PATH获知当前环境变量的值
4、export PATH=echo $PATH获知当前环境变量的值
5、打开新的命令窗口(方便操作)
修改工作目录下的vi /home/hhz/.bashrc 配置命令终端的隐藏文件
在最后一行加入如下:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/hhz/CrossCompilationTool/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

//5、配置文件马上生效:source /home/hhz/.bashrc

(5)检查交叉编译工具:arm-linux-gnueabihf-gcc -v

看有没有相关信息,如4.8.3版本的

如何编译?

编译跟gcc(cc)类似:arm-linux-gnueabihf-gcc xxx.c -o xxx
查看文件的信息用file:file xxx

带wiringPi库的交叉编译如何进行?

引入软、硬链接

软链接:
(1) 软链接文件类似于Windows的快捷方式
(2)在选定的位置上生成源文件的镜像,不会占用磁盘空间
(3)在符号连接中,文件实际是一个文本文件,其中包含的有另一文件的位置信息

硬链接:在选定的位置上生成一个与源文件大小相同的文件

软链接使用方式

如果主机上没有wiringPi库(没找到下载途径或下载之后用不了),将树莓派的wiringPi库拿来用

第一步
在树莓派进入cd /usr/lib
用 scp指令 文件(夹)名 用户名@IP地址:目录位置

scp wiringPi.so.2.50 hhz@172.20.10.6:/home/hhz/CrossCompilationTool/

第二步
在ubuntu /home/hhz/CrossCompilationTool/目录下
指令 参数 要被链接的文件 指定生成的文件名

ln -s libwiringPi.so.2.50 libwiringPi.so

硬链接使用方式

无参数:ln libwiringPi.so.2.50 libwiringPi.so

在ubuntu带库wiringPi编译

arm-linux-gnueabihf-gcc +.c文件+ -I指定头文件路径+ -L 指定库路径+ -l链库+ -o 生成指定文件

arm-linux-gnueabihf-gcc test.c -I /home/hhz/CrossCompilationTool/wiringPi -L /home/hhz/CrossCompilationTool/ -lwiringPi -o crossTest

-I:(大写的i)指定路径找头文件
-L:指定路径找库
./:当前路径下
-l:(小写的L)链接库,例如线程的-lphread、ncurses图形化界面库的-lcurses

树莓linux交叉编译相关推荐

  1. Linux 交叉编译简介

    Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...

  2. Arm Linux 交叉编译(交叉编译是什么?CROSS_COMPILE)(交叉编译工具链【待更】)

    文章目录 交叉编译 1.编译 2.本地编译 3.交叉编译 交叉编译工具链 交叉编译 在嵌入式系统开发中,经常会听到一个词:交叉编译.到底什么是"交叉编译"呢?为什么要使用" ...

  3. linux top交叉编译_Linux 系统下ARM Linux交叉编译环境crosstool工具

    Linux系统下ARM Linux交叉编译环境的建立目前流行的有三种途径. 一.使用别人编译好的开发工具链本文引用地址:http://www.eepw.com.cn/article/201611/31 ...

  4. linux top交叉编译_ARM Linux交叉编译工具链的制作

    本次是在VMWare虚拟机里安装了CentOS5.2操作系统,并在上面编译自己的ARM交叉编译工具链,下面是相应的步骤: 首先下载crosstool0.43源码包(crosstool-0.43.tar ...

  5. linux 交叉编译 libxml2,openssl,libssh2

    版本: libxml2-2.9.1 openssl-1.0.1e libssh2-1.4.3 linux下的开源软件的编译比较统一,一般分为如下几步 ./configure;make;make ins ...

  6. 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )

    文章目录 I . NDK platforms 目录下的 函数库 II . Ubuntu 配置 NDK 交叉编译环境 III . 同时指定编译的头文件和库文件 IV . 指定编译的头文件 V . 指定编 ...

  7. Linux交叉编译问题strace解决 signalfd.c:15: xlat/sfd_flags.h:17: error: size of array 'type name' is negative

    产品不是很稳定,执行shell容易出现段错误,为了定位打算移植strace到嵌入式板子上,环境是MIPS平台,从github上下载的strace源码,编译ARM平台通过( ubuntu 12.04 交 ...

  8. vs linux 交叉编译,VS结合VisualGDB搭建OpenWrt交叉编译远程调试开发环境

    由于此开发环境涉及3设备协同工作,因此先说明一下整体开发环境的配置以及每部分所负责的功能: 1.Windows PC 这里我用的是64位Win7,作为VS的安装环境Windows自然是必不可少的,本机 ...

  9. linux 交叉编译 静态库,从Linux为Windows开发交叉编译静态库

    我想在Linux中为Windows编译静态库.以下是我跟着编译从Linux为Windows开发交叉编译静态库 使用i586-mingw32msvc-cc -c static_lib.c -o stat ...

最新文章

  1. matlab 设计 18db,基于混沌理论的微弱MPSK信号解调方案设计
  2. Dotnet core使用JWT认证授权最佳实践(二)
  3. ASP.NET MVC + ADO.NET EF 项目实战(二):设计过程与设计工具
  4. linux的重要文件,Linux中重要文件夹介绍
  5. eclipse建java项目不见_秒建一个后台管理系统?用这5个开源免费的Java项目就够了...
  6. 写Java代码分别使堆溢出,栈溢出
  7. 冰点还原精灵如何安装
  8. Win11如何设置默认浏览器 win11设置默认浏览器的步骤方法
  9. 2015第二届上海国际机上内饰与翻新展览会
  10. android: Apostrophe not preceded by \ 错误
  11. QT设置应用程序图标设置
  12. 网络划分之IP地址计算器
  13. [AV1] interpolation
  14. intellij idea 设置代理 代理下载
  15. win10开机一直转圈圈进不去系统怎么办
  16. Greenplum实战-gpstop gpstart集群命令
  17. webstorm js中文乱码
  18. [分享]PHP多城市版-房产系统源码,仿贝壳房产。
  19. piwik.php是什么,Piwik是什么?Piwik有哪些优点?
  20. 很好用的chrome 插件合集,不要错过

热门文章

  1. 惠普创始人之一 戴维·帕卡德
  2. Reloaded(重启)
  3. 可以监测西门子1500/1200PLC数据的小软件
  4. 解决Win7中无法使用扫描仪的功能问题
  5. JAVA计算机毕业设计在线党建学习平台Mybatis+源码+数据库+lw文档+系统+调试部署
  6. 面向对象改造——50道100以内的加减法口算习题
  7. python动画精灵_如何使用Adafruit的CircuitPython创建动画精灵
  8. 适配Dell R750xs server Broadcom BCM57412 NetXtreme-E 10Gb SFP+ 网卡
  9. 批判和质疑,要坚守自我
  10. 工作汇报PPT模板制作,这些要点要留意