当前位置: 首页 > news >正文

Linux入门篇之RK3588基于Buildroot系统下安装交叉编译器

一、交叉编译器

交叉编译器是一种能够在一种计算机平台上生成另一种平台可执行代码的编译器。例如,在x86架构的PC上编译出运行于ARM架构嵌入式设备的程序。与本地编译器不同,交叉编译器的编译环境和运行环境是分离的。

二、为什么需要交叉编译器?

Buildroot 采用极简设计,不具备包管理功能

  • Ubuntu:支持 apt 等包管理工具
  • Buildroot:不提供 apt、yum、opkg 等任何安装工具
  • 添加软件:只能在系统编译阶段集成
  • 系统部署后:无法在线安装 gcc 等工具

因此我们需要在电脑上的Ubuntu中下载好gcc,然后将需要编译的.c文件进行编译生成可执行文件,将可执行文件的文件上传给我们的开发板直接运行。接下来就是示范流程

三、操作过程

1、给Ubuntu安装上交叉编译器

这里有两种选择,一种是在线安装交叉编译器,但是在线安装的话呢可能不能保证正常工作,我们需要自己去修改对应的源代码,除非特殊需求,我们直接用第二种。第二种我们直接使用正点原子官方给我们打包的交叉编译器,后面附上打包好的交叉编译器。

(1)第一步:通过finshell终端连接Ubuntu系统,将交叉编译器文件上传到虚拟机的Ubuntu系统上,你用其他终端也可以,只要文件能传过去就可以了,我们把它放在home目录下就行,其他的放也行,自己找个合适的地方。我就放在home目录下的ziqi(用户名)下了,就是最下面的atk-drik3588-toolchain...文件

(2)第二步:打开终端

先看一下文件是否已经传输过来,传输过来后我们输入以下命令

先给该文件赋予可执行权限,然后执行该文件,他就会显示下面的信息,按下图提示操作

(3)第三步:source /opt/atk-dlrk3588-toolchain/environment-setup 运行这个条命令,交叉编译器路径加入系统环境,这样子就搞定啦

(4)第四步:验证是否安装成功:进入编译器所在的bin后运行aarch64-buildroot-linux-gnu-gcc -v,查看能否生效。

(5)编译.c文件,我就以我自己的一个led.c为例子吧,首先我们来到Ubuntu终端,进入到我们.c文件存放的位置,然后运行$CC -o led led.c命令,你就看到一个可执行文件led啦

$CC → 交叉编译器 -o → 指定输出文件名 led → 输出的程序叫 led led.c → 源代码文件是 led.c

(6)将编译好的可执行文件led通过SSH远程传送给我们的开发板(不知道怎么远程连接的看我linux专栏下关于远程联机的文章)https://blog.csdn.net/2301_81056636/article/details/161059844?spm=1011.2124.3001.6209

scp → 我要传文件 led → 传这个叫 led 的文件 root → 用 root 账号登录 @ → 连接 192.168.2.115 → 开发板的地址 : → 找到了设备!现在指定目录 /work/01_led/ → 把文件放这里

看,文件已经过来啦!!!我们编译试试看

(7)进入led所在目录后,给我们的led加上可执行权限,然后运行

点亮成功!

http://www.jsqmd.com/news/821766/

相关文章:

  • HI3798MV200网络驱动移植手记:搞定PHY复位、RTL8211灯控与GPIO模拟状态灯
  • SignatureTools开源工具深度解析:Android APK签名与渠道管理的高效解决方案
  • 2026最新:国内如何开通 Claude Code?微信/支付宝也能使用(完整教程)
  • 别再死记硬背了!用ADS仿真无源滤波器,从画图到出S参数曲线保姆级指南
  • 5分钟掌握foo2zjs:让Linux完美支持100+打印机型号的终极方案
  • AI Agent 在你电脑上跑命令,你真的放心吗
  • 给嵌入式工程师的保姆级ISP图像调试指南:从AE曝光到3DNR降噪的完整流程
  • Gartner:80%通过AI裁员的企业,失败了# AI裁员失败,不是因为AI不行
  • 从物理层到传输层:一张图看懂网络中间设备的层级与选型
  • 【技术解析】ConvGeM:突破图像篡改检测瓶颈,多尺度监督下的特征融合新范式
  • Paperless-ngx深度解析:企业级文档管理系统的架构设计与实战指南
  • 5步快速解决老Mac显卡驱动问题:OpenCore Legacy Patcher完整实践指南
  • 抖音直播弹幕实时采集:零代码方案让数据洞察触手可及
  • WandEnhancer终极指南:3步解锁完整WeMod高级功能
  • 初次体验Taotoken官方价折扣活动的接入与成本节省体会
  • AIGC学习路线图:从理论到实践的完整指南与项目实战
  • 基于CircuitPython的蛇形机器人:从避障算法到机械结构全解析
  • 告别安装失败:详解Questasim 10.6c在Windows下的环境变量与许可证配置
  • STM32单片机学习(11)——GPIO输入实验
  • SVG图标管理系统GodSVG:从资产化到工程化实践
  • 第21天:文件读写和异常处理
  • 开源知识图谱引擎:构建个人知识管理系统的核心架构与实践
  • 从 JDBC 角度剖析 SQL 注入绕过登录机制
  • 终极桌面整理指南:如何用NoFences免费开源工具告别杂乱桌面
  • 啥是RAG 它能干什么?
  • 3步完成笔记迁移:Obsidian Importer让知识整合变得如此简单
  • 无风扇笔记本散热原理与工程实践:静音计算的取舍与优化
  • 3分钟快速搭建QQ机器人:LuckyLilliaBot OneBot框架终极指南
  • 极速上手!OpenClaw 接入 MiniMax 图文指南
  • 第22天:对象的序列化和反序列化