0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK3506 Buildroot无gcc/sudo?SDK工具链3步搞定C程序编译运行

jf_44130326 来源:Linux1024 2026-02-10 16:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、痛点直击:Buildroot系统的两难困境

打开RK3506 Buildroot终端,执行编译命令常出现如下报错:

root@myd-yr3506:/# gcc -vbash:gcc:commandnotfoundroot@myd-yr3506:/# sudo apt install gccbash:sudo:commandnotfound

这是嵌入式开发中的高频场景——Buildroot为实现轻量化,采用极致精简设计,核心限制包括:

1.无本地编译工具:未预装gccmake等开发套件,无法直接在板端完成编译;

2.无包管理与sudo:默认以root用户登录,无apt/yum等包管理工具,无法在线安装软件;

3.文件系统只读:rootfs分区默认以只读模式挂载,文件传输与运行需手动切换权限。

结合test.c程序与RK3506 SDK工具链,通过“PC端编译、板端运行的三步流程可全程规避上述问题。

二、核心原理:SDK工具链的适配优势

交叉编译是嵌入式开发的标准解决方案:在x86架构PC端,通过适配ARM架构的编译器,生成可在RK3506上直接运行的二进制文件。

瑞芯微官方SDK自带的交叉工具链,相比通用工具链具备三大核心优势:

1.硬件深度适配:与SDK内核源码、驱动模块同源,可原生支持RK3506GPIOCAN等硬件接口调用;

2.预编译免安装:工具链集成于SDKprebuilts目录,无需额外下载与配置,开箱即可用;

3.环境一致性:编译参数与板端固件完全匹配,从源头规避架构不兼容、库依赖缺失等问题。

三、实操3步曲:从编译到运行全流程

前置准备

硬件:RK3506开发板(需处于联网状态)、PC(建议采用Ubuntu 22.04系统);

软件:RK3506官方SDK(含prebuilts交叉工具链)、test.c程序。

第一步:激活SDK交叉编译工具链(PC端)

1.解压SDK并进入目录

为避免编译异常,建议将SDK存放于非中文、非共享目录:

mkdir-p ~/rk3506_sdk &&cd~/rk3506_sdktar -zxf rk3506_linux6.1_sdk.tar.gz # 替换为实际SDK压缩包名cdrk3506_linux6.1_sdk

1.配置环境变量(关键步骤)

SDK工具链默认位于prebuilts目录,通过环境变量激活:

# 32位ARM工具链路径(RK3506主流配置)TOOLCHAIN_PATH=$(pwd)/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-linux-gnueabihf/bin# 导出架构与编译器前缀exportARCH=armexportCROSS_COMPILE=$TOOLCHAIN_PATH/arm-linux-gnueabihf-exportPATH=$TOOLCHAIN_PATH:$PATH

1.验证工具链激活

执行以下命令,输出版本信息即表示激活成功:

$CROSS_COMPILEgcc -v# 成功示例:gcc version 10.3.0 (GCC)

第二步:编译目标test.c程序(PC端)

1.创建test.c程序

保存为test.c,示例代码如下:

#include// 包含标准输入输出库(printf 函数依赖)
// 程序入口函数(C 程序必须有且仅有一个 main 函数)intmain(void){ // 输出 "Hello World!" 到终端,n 表示换行 printf("Hello World!n"); printf("rk3506 buildroot: Rockchip Linux 6.1 SDKn"); 
 return0; // 程序正常退出,返回 0(非 0 表示异常)}

1.执行交叉编译

需添加-static参数实现静态编译,避免板端因缺失依赖库报错:

$CROSS_COMPILEgcc test.c -otest-static -Wall#或者使用绝对路径/home/sc/MYD-YR3506/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc test.c -otest

各参数功能:

-o test:指定输出可执行文件名为test

-static:将所有依赖库打包进程序,实现独立运行;

-Wall:开启全部编译警告,辅助排查代码语法问题。

1.验证编译结果

通过file命令确认程序适配ARM架构:

sc@sc:/mnt/hgfs/rk3506_gateway$file testtest:ELF32-bitLSBexecutable,ARM,EABI5version1(SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3,forGNU/Linux3.2.0, with debug_info,notstripped

第三步:推送程序到板端并运行

关键前提:切换板端文件系统为读写模式

# 板端执行(通过串口或SSH登录)mount-o remount,rw / # 重新挂载根目录为读写模式(这一步不是必须的)
方法1ADB推送(常用方法,需板端开启ADB

1.PC端推送文件至板端可读写分区(如/userdata/root):

adb push F:sharerk3506_gatewaytest/

1.板端运行程序:

cd/userdata/chmod+xtest# 赋予执行权限./test
方法2SCP网络传输(无ADB时适用)

1.PC端通过SSH推送(替换board_ip为板卡实际IP):

scp test root@board_ip:/userdata/# 符合SDK文件传输标准

1.板端运行流程同上,最终输出结果:

wKgZO2kah36Adb1EAABDa7IoIVA643.png

四、避坑指南:5个高频问题解决方案

问题现象

原因分析

解决方法

工具链激活失败:command not found

环境变量路径错误

1.执行echo $PATH确认工具链bin目录已加入;2.检查SDK解压路径是否含中文/空格

编译报错:undefined reference to xxx

动态库依赖缺失

编译时添加-static参数,或在Makefile中指定库路径

板端运行:exec format error

编译器架构不匹配

确认工具链前缀为arm-linux-gnueabihf-32ARM),而非aarch64-linux-gnu-64位)

推送文件:Read-only file system

未切换读写模式

板端执行mount -o remount,rw /,或推送至/userdata等默认可读写分区

ADB推送失败:device not found

板端未开启ADB

1.板端执行adb start-server2.确认PC与板卡处于同一局域网

五、进阶技巧:将程序集成到SDK固件(批量部署)

若需批量烧录设备,可将程序纳入SDK编译体系,生成固件时自动集成该程序:

1.SDK中创建应用目录:

cd~/rk3506_sdk/packagemkdirmy_test &&cdmy_test

1.编写Config.inmy_test.mk配置文件(需符合Buildroot包管理规范);

2.编译新固件:

cd~/rk3506_sdk./build.sh lunch # 选择板型配置./build.sh buildroot # 编译包含程序的根文件系统

1.烧录新固件后,可直接在板端执行test命令调用程序。

六、总结

RK3506 Buildrootgcc、无sudo”特性是轻量化设计的必然结果,通过SDK自带交叉工具链,遵循激活工具链编译程序推送运行三步流程,即可实现C程序的快速板端部署。核心逻辑在于利用工具链的硬件适配性,结合静态编译与读写模式切换,规避嵌入式系统精简特性带来的限制。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3848

    浏览量

    85459
  • 命令
    +关注

    关注

    5

    文章

    759

    浏览量

    23917
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1111

    浏览量

    52003
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Buildroot MQTT-Modbus 网关开发,实现设备远程监控方案-米尔RK3506

    在工业物联网与智能家居场景中,远程设备监控的核心痛点是工业总线协议与物联网协议的兼容性问题。基于RK3506Buildroot系统开发的MQTT-Modbus网关产品,通过协议桥接技术完美解决这一
    的头像 发表于 12-18 08:05 3775次阅读
    <b class='flag-5'>Buildroot</b> MQTT-Modbus 网关开发,实现设备远程监控方案-米尔<b class='flag-5'>RK3506</b>

    米尔瑞芯微多核异构低功耗RK3506核心板重磅发布

    。‌下面详细介绍这款核心板的优势。 新一代入门级国产工业处理器RK3506,3核A7+单核M0多核异构瑞芯微RK3506系列处理器是一款专为工业和商业应用设计的高性能芯片,集成了3个Cortex-A7
    发表于 05-16 17:20

    【米尔RK3506国产开发板评测试用】1、硬件介绍、SDK开发环境和QT开发环境搭建

    QT Creator 使用BuildRoot构建的工具中包含qmake,可以用于开发板QT应用程序。首先安装QT Creator,在命令行中输入以下指令安装QT Creator。
    发表于 08-02 15:02

    【米尔RK3506国产开发板评测】3、实时补丁以及EtherCAT IGH移植

    ,--host参数根据使用的工具编译器前缀进行调整。 导入Buildroot工具的环境配置
    发表于 10-27 10:09

    ROC-RK3568-PC的Buildroot开发案例分享

    本章节。  交叉编译工具  Firefly 提取了 Buildroot 的交叉编译工具
    发表于 10-25 17:08

    fireflyAIO-3399J编译Buildroot固件简介

    -c 方法二 下载Linux_SDK.7z # 把压缩包放在上一下载repo工具的目录下 7z x Linux_SDK.7z # 更新代
    的头像 发表于 12-24 11:11 3180次阅读

    RK3568 编译sdk技巧

    我司RK3568对外提供源代码是以sdk的形式提供,包括但不仅限于uboot、kernel、buildroot、debian源码。在编译sdk
    的头像 发表于 08-30 11:44 1968次阅读
    <b class='flag-5'>RK</b>3568 <b class='flag-5'>编译</b><b class='flag-5'>sdk</b>技巧

    触觉智能RK3506核心板,工业应用之RK3506 RT-Linux实时性测试

    触觉智能RK3506核心板,工业应用方案分享之RT-Linux实时性测试
    的头像 发表于 04-27 19:27 2235次阅读
    触觉智能<b class='flag-5'>RK3506</b>核心板,工业应用之<b class='flag-5'>RK3506</b> RT-Linux实时性测试

    瑞芯微RK3506开发板必备攻略之Qt应用开发手册(下),触觉智能工控嵌入式方案商

    本文基于触觉智能RK3506星闪开发板Buildroot系统进行演示,配套RK3506核心板(3核A7+M0多核异构)宽温级59元/工业级68元BuildrootSDK安装与环境搭建
    的头像 发表于 06-19 17:49 1457次阅读
    瑞芯微<b class='flag-5'>RK3506</b>开发板必备攻略之Qt应用开发手册(下),触觉智能工控嵌入式方案商

    RK3506开发板Linux开发板极致性价比之选

    RK3506开发板Linux开发板极致性价比之选瑞芯微RK3506开发板,3核Cortex-A7@1.5GHz+Cortex-M0,Linux+RT-Thread系统支持,128MB超大
    的头像 发表于 09-11 16:26 3862次阅读
    <b class='flag-5'>RK3506</b>开发板Linux开发板极致性价比之选

    RK3506开发板QT Creator开发手册,交叉编译工具与QT应用示例,入门必备

    本文基于触觉智能RK3506核心板/开发板介绍QTCreator交叉编译配置与QT应用示例。如需购买开发板进行评估验证简介QTCreatorQtCreator‌是由TheQtCompany开发的跨平台集成开发环境(IDE),专为Qt框架设计,支持
    的头像 发表于 09-30 16:26 3928次阅读
    <b class='flag-5'>RK3506</b>开发板QT Creator开发手册,交叉<b class='flag-5'>编译</b><b class='flag-5'>工具</b><b class='flag-5'>链</b>与QT应用示例,入门必备

    如何让RK3506流畅刷图,用好RGA?

    本文基于触觉智能RK3506核心板/开发板,介绍RGAIM2D进行图像处理,包括相关编译与测试方法。
    的头像 发表于 10-29 10:00 1530次阅读
    如何让<b class='flag-5'>RK3506</b>流畅刷图,用好RGA?

    基于米尔RK3506 Buildroot的MQTT-Modbus网关开发:实现设备远程监控新方案

    在工业物联网与智能家居场景中,远程设备监控的核心痛点是工业总线协议与物联网协议的兼容性问题。基于  RK3506 Buildroot  系统开发的  MQTT-Modbus  网关产品,通过协议桥接
    的头像 发表于 11-25 17:41 3220次阅读
    基于米尔<b class='flag-5'>RK3506</b> <b class='flag-5'>Buildroot</b>的MQTT-Modbus网关开发:实现设备远程监控新方案

    技术分享 | RK3506如何交叉编译frp wireguard

    RK3506拥有着不错的性价比以及与之相匹配的性能优势,非常适合用来做边缘计算网关、小型数据收集端点等。今天给大家带来两款内网穿透工具的交叉编译移植,方便在RK3506上搭建相关应用。
    的头像 发表于 12-25 17:29 786次阅读
    技术分享 | <b class='flag-5'>RK3506</b>如何交叉<b class='flag-5'>编译</b>frp wireguard

    触觉智能RK3506 SDK2.0发布,20余项升级优化与bug修复

    触觉智能RK3506核心板/开发板SDK与软件资料迎来更新,SDK版本号为“rk3506_linux6.1_v1.2.0”。软件资料也同步进行升级,版本号为2.0,网盘资料路径为:EV
    的头像 发表于 03-14 07:13 645次阅读
    触觉智能<b class='flag-5'>RK3506</b> <b class='flag-5'>SDK</b>2.0发布,20余项升级优化与bug修复