树莓派(Linux系统通用)交叉编译(环境搭建、简单使用)

news2024/11/26 19:52:25

概念

交叉编译是指在一台计算机上编译运行在另一台计算机上的程序。(编译是指,在一个平台上生成在该平台上的可执行程序)通常情况下,编译器和目标平台的架构是不同的,例如,在一台x86平台上编译运行在ARM平台上的程序。(单片机常用KEIL上面编译代码就是交叉编译)比如我们在Linux环境上编写树莓派的使用代码,生成可执行代码,下载到树莓派中运行的这一个过程。

交叉编译需要使用交叉编译工具链,包括交叉编译器、库文件、头文件等。交叉编译器可以将源代码编译成目标平台的可执行文件,而库文件和头文件则提供了目标平台的系统调用和函数定义等信息。

交叉编译通常用于嵌入式系统开发、操作系统开发、科学计算等领域。通过交叉编译,可以在一台通用的计算机上快速编译出多个平台的程序,提高开发效率和代码可移植性。 

为什么要使用 

  1. 硬件平台限制:如果您的程序需要在特定的硬件平台上运行,但您的开发计算机不具备该硬件平台,那么您可以使用交叉编译来生成该平台上的可执行文件。

  2. 软件依赖性:如果您的程序依赖于特定的库或工具链,而这些库或工具链只适用于另一种操作系统或计算机架构,那么您可以使用交叉编译来生成该平台上的可执行文件。

  3. 提高编译效率:交叉编译可以在一台计算机上并行编译多个目标平台的程序,从而提高编译效率和节省时间。

  4. 安全性:交叉编译可以将程序的源代码和编译器隔离开来,从而减少了潜在的安全风险。

总结:平台上不允许或不能够安装我们所需要的编译器,比如C51 ;

1.因为目的平台上的资源贫乏,无法运行我们所需要编译器

2.树莓派是不是就不需要交叉编译?
错。也要树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。操作系统也是代码,也要编译!
平台运行需要两样至少东西:bootloader(后动引导代码)以及操作系统核心
宿主机(host):编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。 

工具链的安装

 下载工具

 下载链接https://github.com/raspberrypi/

把文件弄到Ubuntu里面

下载好之后在Ubuntu系统里面开启共享文件 

 这里我已经添加,道友们可以点击添加按钮,找到下载的工具包路径,或者自己创建一个文件夹把刚刚下载的包放到里面,然后选择路径,点击确定就可以。

开始安装

默认共享文件路径在 , xxx表示你创建的共享文件夹名字

/mnt/hgfs/xxx/

通过cd /mnt/hgfs/xxx/ 到该目录下;ls 指令可以看到tools-master.zip

使用unzip tools-master.zip解压如果解压不成功可以加权限 sudo unzip tools-master.zip

然后cd  tools-master/ 再用 ls 查看到arm-bcmxxx文件,我当时下载的是arm-bcm2708

然后cd arm-bcm2708/ 再用 ls 看到gcc-linaro-arm-linux-gnueabihf-raspbian-x64如果你的环境是32位的使用不带x64的就可以。

继续使用图中指令

 可以看到能够使用的一下东西。

 环境路径变更

从上面知道,想要使用这个工具要到的路径太深,不可能每次使用都到这个路径。我们需要改变使用路径,在什么路径底下都可以使用。

临时变更

使用echo $PATH 显示当前工具的环境变量路径

再使用指令 pwd 看变量位置

使用指令 export PATH= 将图中花圈路径的拼接

回到主目录查看是否成功,图中这样能够找到,打开对应文件就是成功

 

永久变更

临时的肯定不好,每次开机都要重新配置

修改隐藏的配置文件 .bashrc 

使用图中指令找到最开始的目录

然后

 拉到最后面,添加刚才的内容,保存退出

更新一下 ,就可以了

 

 分享一个技巧:输入指令history 可以查看到你使用过的所有指令。

 

使用

 创建一个文件test1.c

如果只是gcc 编译,只能在x86-64环境下执行编译和的程序

使用arm-linux-gnueabihf-gcc test1.c -o test_1 能够看到可以在ARM-Linux平台使用

通过scp test_1 pi@192.18.1.41:Desktop 把可执行程序移动到树莓派。

注意:pi是我的树莓派用户名,192.168.1.41是我的树莓派地址 

然后选择yes进入,输入你的树莓派密码。 

 到树莓派查看是否成功,图中能够找到test_1证明成功了, ./test-1 就可以执行

 然后你会发现运行失败

原因是没有链接到编写代码环境的地址

上图是编译环境的地址192.168.91.128 

 在编译环境这边:  ./test1 192.168.91.128 8880

注意:test1是在编译环境下gcc编译的  地址是编译环境地址  8880是端口号(自己设置)

 树莓派端: ./test_1 192.168.91.128 8880

避免篇幅太长wiringPi库的交叉编译放在下一篇文章。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go 语言史诗级更新-循环Bug修复

背景 前两天 Golang 的官方博客更新了一篇文章:Fixing For Loops in Go 1.22 看这个标题的就是修复了 Go 循环的 bug,这真的是史诗级的更新;我身边接触到的大部分 Go 开发者都犯过这样的错误,包括我自己,所以前两年我也…

SOLIDWORKS 专业显卡要求

每次谈及SOLIDWORKS对于显卡的需求,都有讲不完的话题,往往纠结于到底选择游戏卡还是专业图形卡?首先需要明确,不仅仅是SOLIDWORKS软件, 几乎所有的图形类软件都推荐使用专业图形卡。 今天微辰三维特别整理一下SOLIDWORKS不同项目对…

实体行业数字化转型怎么做?线上线下相结合的新零售体系怎么做?

如今,实体行业想要取得收入增长,只做线下业务或者只做线上业务,在当前的市场环境中是难以长久生存的,因此一定要线上线下相结合,将流量运作与线下转化进行充分结合,才能更好地发挥实体优势,带来…

气球派对服务小程序商城的效果是什么

气球派对包含多种场景,除了线下服务如生日布置、浪漫小礼、婚礼布置、周岁礼等,还有相关产品销售属性;同时这些服务具备较高的同城场景和定制化需求,在实际生活中,这些服务的需求度较高,但同样需要商家不断…

防止员工拷贝公司终端电脑文件数据(如何防止企业数据文件被任意拷贝?)

在当前的信息时代,数据被誉为“新型石油”,而公司内部的文件往往是企业核心数据和竞争优势的重要载体。然而,近年来,员工私自拷贝公司内部文件的事件屡见不鲜,这不仅威胁到企业的信息安全,也可能导致公司的…

探索ClickHouse——使用Projection加速查询

在测试Projection之前,我们需要先创建一张表,并导入大量数据。 我们可以直接使用指令,从URL指向的文件中获取内容并导入表。但是担心网络不稳定,我们先将文件下载下来。 下载文件 wget wget http://prod.publicdata.landregistr…

OpenHarmony应用模型的构成要素与Stage优势

一、应用模型的构成要素 应用模型是OpenHarmony为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。 二、Stage主推模型优势…

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出 目录 多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向…

layuiselect设置为不可下拉选取

$("#exam").siblings(".layui-form-select").find("dl").remove(); 或 layuiSelectDisable($("#exam")); // 设置selet元素不可下拉选择function layuiSelectDisable(selectElem) {try {var dlElem selectElem.siblings(".layu…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gitblit服务器

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gitblit服务器 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、Gitblit介绍2.1 Gitblit简介2.2 Gitblit特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、检查服务…

HarmonyOS CPU与I/O密集型任务开发指导

一、CPU密集型任务开发指导 CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行。例如图像处理、视频编码、数据分析等。 基于多线程并发机制处理CPU密集型任务…

【北亚企安数据恢复】Ceph存储介绍Ceph数据恢复流程

Ceph存储基本架构: Ceph存储可分为块存储,对象存储和文件存储。Ceph基于对象存储,对外提供三种存储接口,故称为统一存储。 Ceph的底层是RADOS(分布式对象存储系统),RADOS由两部分组成:OSD和MON。 MON负责监…

vue项目开发环境工具-node

最近在开始接触做vue框架的前端项目,以前用的前端比如html,js,css等都是比较原生的,写好后直接浏览器打开就行。但vue跟java一样是需要编译的,和微信小程序类似。今天就先记录一下vue的开发运行搭建。所需工具如下 nod…

从小白到大咖:软件测试工作半年心得分享!总结我掉的4个坑…

从事软件测试工作已经半年多了,刚入职的时候还是一个缺乏实际经验的小白,而现在拿到需求之后也能比较快速地熟悉业务并顺利开展测试,虽然不能说掌握了很多技能,但是相比之前也是有不少收获的,在这个过程中我总结了一点…

spring-cloud-alibaba-dubbo-issues1805修复

spring-cloud-alibaba-dubbo-issues1805修复 文章目录 [toc] 1.官方信息2.版本代码对比3.修改尝试4.验证5.总结 这个issue就是我这前写了那两篇文章的那个issue Dubbo重启服务提供者或先启动服务消费者后启动服务提供者,消费者有时候会出现找不到服务的问题及解决 …

2023年第二届HiPChips解读

The 2nd International Workshop on High Performance Chiplet and Interconnnect Architectures (HiPChips) 主题 Optical and other advanced chiplet interconnect technologiesInterconnect standards of coherent and non-coherent data sharing protocols (e.g. CXL)D…

美妆护肤品经营小程序商城的作用是什么

美妆护肤品市场非常庞大,属于长期消耗品,对厂家或经营者来说,本质上市场并不缺购买的人,但由于品牌/同行众多,加之消费升级客户线上购物消费,因此传统线下商家发展困难。 但通过线上经营又受制于第三方平台…

9.25 day 2

1. 简述方法重写与方法重载的意义与区别: 方法重写: 1.参数列表必须完全与被重写方法相同 //参数列表(分为四种): (1)无参无返回值方法; (2)有参无返回…

顺风车软件搭建流程:数字化出行与社会共享的创新

随着移动互联网的快速发展,顺风车软件作为一种新型出行方式逐渐流行起来。本文将介绍顺风车软件搭建的流程,包括需求分析、技术架构设计、用户体验优化以及安全性保障。通过深入思考数字化出行与社会共享的关系,为读者呈现一个专业、有逻辑性…

【Synapse数据集】Synapse数据集介绍和预处理,数据集下载网盘链接

【Segment Anything Model】做分割的专栏链接,欢迎来学习。 【博主微信】cvxiaoyixiao 本专栏为公开数据集的介绍和预处理,持续更新中。 文章目录 1️⃣Synapse数据集介绍文件结构源文件样图文件内容 2️⃣Synapse数据集百度网盘下载链接官网下载登录下…