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

保姆级教程:在Ubuntu上为RK3588开发板配置交叉编译环境(含完整脚本)

保姆级教程在Ubuntu上为RK3588开发板配置交叉编译环境含完整脚本刚拿到RK3588开发板时最让人头疼的就是如何快速搭建开发环境。不同于x86平台的直接编译嵌入式开发需要面对处理器架构差异、工具链配置、库依赖等复杂问题。本文将用最直白的方式带你从零完成交叉编译环境的搭建并附上可直接复用的完整脚本。1. 环境准备从零开始的基石工欲善其事必先利其器。在开始之前我们需要确保基础环境就位。推荐使用Ubuntu 20.04 LTS或更新版本这是目前最稳定的开发环境选择。首先更新系统软件源并安装必要工具sudo apt update sudo apt upgrade -y sudo apt install -y git make gcc g flex bison libncurses-dev \ libssl-dev libelf-dev bc python3 device-tree-compiler提示如果使用虚拟机建议分配至少8GB内存和50GB磁盘空间内核编译过程对资源消耗较大。验证基础工具链是否正常gcc --version | head -n1 make --version | head -n1正常应显示类似gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0的版本信息。2. 获取RK3588专用工具链RK3588采用ARM Cortex-A76/A55架构需要aarch64-linux-gnu工具链。官方推荐使用buildroot预编译的工具链这是最稳定的选择。下载并解压工具链wget https://github.com/rockchip-linux/rk3588-toolchain/releases/download/v1.0.0/rk3588_toolchain_linux_x86_64_gcc_11.2.0_glibc_2.35.tar.xz sudo tar -xvf rk3588_toolchain_linux_x86_64_gcc_11.2.0_glibc_2.35.tar.xz -C /opt配置环境变量脚本buildenv.sh#!/bin/bash export TOOLCHAIN_PATH/opt/rk3588_toolchain export PATH$TOOLCHAIN_PATH/bin:$PATH export CROSS_COMPILEaarch64-linux-gnu- export CC${CROSS_COMPILE}gcc export CXX${CROSS_COMPILE}g export LD${CROSS_COMPILE}ld export AR${CROSS_COMPILE}ar export ARCHarm64使脚本生效并验证source buildenv.sh aarch64-linux-gnu-gcc --version成功时应显示工具链版本信息而非command not found。3. 实战编译第一个ARM程序让我们用经典的Hello World验证环境是否正常工作。创建hello.c#include stdio.h int main() { printf(Hello RK3588!\n); return 0; }对应的MakefileCC$(CROSS_COMPILE)gcc TARGEThello all: $(TARGET) $(TARGET): hello.c $(CC) $^ -o $ clean: rm -f $(TARGET)编译并检查make file hello正确输出应包含ARM aarch64字样。将生成的可执行文件通过adb或scp传到开发板运行即可看到问候信息。4. 进阶内核模块开发环境配置RK3588的Linux内核版本为5.10需要特别配置模块编译环境。首先获取内核头文件git clone --depth1 -b rk3588/firefly https://github.com/rockchip-linux/kernel.git cd kernel make ARCHarm64 rockchip_linux_defconfig make ARCHarm64 prepare0创建模块测试目录hello_mod包含以下文件hello.c:#include linux/module.h #include linux/init.h static int __init hello_init(void) { printk(KERN_INFO RK3588 module loaded\n); return 0; } static void __exit hello_exit(void) { printk(KERN_INFO RK3588 module unloaded\n); } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE(GPL);Makefile:KDIR ? ../kernel obj-m : hello.o all: make -C $(KDIR) M$(PWD) modules clean: make -C $(KDIR) M$(PWD) clean编译命令source ../buildenv.sh make生成的.ko文件可通过insmod加载到开发板内核中。记得使用dmesg查看内核日志输出。5. 常见问题排错指南工具链路径问题症状aarch64-linux-gnu-gcc: command not found解决检查buildenv.sh中的TOOLCHAIN_PATH是否与实际路径一致确保source了该脚本。头文件缺失症状fatal error: stdio.h: No such file or directory解决安装交叉编译库sudo apt install gcc-aarch64-linux-gnu内核版本不匹配症状Invalid module format解决确保开发板运行的内核版本与编译用的内核头文件版本一致可通过uname -r查看。权限问题症状Permission denied解决对工具链目录执行sudo chmod -R 755 /opt/rk3588_toolchain6. 效率提升技巧环境变量持久化将source ~/buildenv.sh添加到.bashrc中避免每次打开终端都需要手动加载。使用ccache加速编译安装ccache后修改buildenv.shexport CCccache ${CROSS_COMPILE}gcc export CXXccache ${CROSS_COMPILE}g并行编译在make命令中添加-j$(nproc)参数充分利用多核CPUmake -j$(nproc)远程调试配置在gcc参数中添加-g3生成调试信息配合gdbserver实现远程调试aarch64-linux-gnu-gcc -g3 hello.c -o hello实际项目中我发现最耗时的往往不是编译过程而是反复的文件传输。建议配置NFS共享目录或使用rsync同步工具可以节省大量开发时间。

相关文章:

保姆级教程:在Ubuntu上为RK3588开发板配置交叉编译环境(含完整脚本)

保姆级教程:在Ubuntu上为RK3588开发板配置交叉编译环境(含完整脚本) 刚拿到RK3588开发板时,最让人头疼的就是如何快速搭建开发环境。不同于x86平台的直接编译,嵌入式开发需要面对处理器架构差异、工具链配置、库依赖等…...

实战指南:通达信缠论量化分析插件的智能化解决方案

实战指南:通达信缠论量化分析插件的智能化解决方案 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 在金融市场技术分析领域,缠论以其严谨的数学结构和完整的理论体系而备受推崇。…...

WarcraftHelper:5大核心优化功能让魔兽争霸3重获新生

WarcraftHelper:5大核心优化功能让魔兽争霸3重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还记得当年在网吧鏖战魔兽争霸…...

Depth Anything深度估计:ComfyUI中AI图像处理的终极指南

Depth Anything深度估计:ComfyUI中AI图像处理的终极指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 在AI图像生成的世界中,深度…...

Tiny11Builder终极指南:如何快速构建精简版Windows 11系统镜像

Tiny11Builder终极指南:如何快速构建精简版Windows 11系统镜像 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder Tiny11Builder是一个开源的PowerShell脚…...

B站CC字幕高效提取工具:3分钟掌握免费下载与格式转换

B站CC字幕高效提取工具:3分钟掌握免费下载与格式转换 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为B站视频中的精彩内容无法保存为文字而烦恼…...

用GPT-4当老师,手把手教你复现LLaVA多模态模型(附代码与数据集)

从零构建LLaVA多模态助手:GPT-4数据生成与模型训练全流程实战 在人工智能领域,多模态模型正迅速成为技术前沿的焦点。当ChatGPT展现强大文本理解能力时,研究者们开始思考:如何让AI同时理解图像和语言?LLaVA&#xff08…...

告别数据跳动!用STM32F103驱动ADS1220进行精密电压测量的5个关键配置与调试技巧

告别数据跳动!用STM32F103驱动ADS1220进行精密电压测量的5个关键配置与调试技巧 在工业测量和传感器信号采集领域,ADS1220作为TI推出的24位精密ADC,凭借其低噪声PGA和灵活的配置选项,成为许多工程师的首选。但实际应用中&#xff…...

PHP订单幂等性设计失效全复盘(2024真实生产事故溯源)

更多请点击: https://intelliparadigm.com 第一章:PHP订单幂等性设计失效全复盘(2024真实生产事故溯源) 某电商平台在 2024 年“618”大促期间突发重复扣款与订单爆炸式生成,核心支付服务 3 小时内创建超 17 万笔状态…...

【PHP 8.9错误处理终极指南】:5大精准管控机制+3个生产环境避坑实战案例

更多请点击: https://intelliparadigm.com 第一章:PHP 8.9错误处理演进与核心理念 PHP 8.9(当前为前瞻规范草案)在错误处理机制上引入了“可恢复类型错误协议”(Recoverable Type Error Protocol, RTEP)&a…...

生信分析实战:用MetaPhlAn4处理完测序数据后,这些结果文件怎么用?(附常用脚本)

MetaPhlAn4结果文件深度解析:从数据提取到高级可视化的完整指南 当你第一次拿到MetaPhlAn4生成的.txt结果文件时,可能会被那些看似晦涩的clade_name和relative_abundance搞得一头雾水。别担心,这篇文章将带你从零开始理解这些数据&#xff0…...

手把手教你用51单片机和ADC0832做个CO2监测仪(附Proteus仿真和Keil源码)

51单片机实战:从零搭建高精度CO2监测仪(含仿真与源码解析) 在空气质量日益受到关注的今天,二氧化碳浓度监测已成为智能家居、农业大棚和工业环境中的重要需求。本文将带您完整实现一个基于51单片机的CO2监测系统,不仅…...

FanControl终极指南:5分钟学会Windows风扇精准控制,告别噪音烦恼

FanControl终极指南:5分钟学会Windows风扇精准控制,告别噪音烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.c…...

Go语言高效开发实战:并发模式、性能优化与工程化实践

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫cxuu/golang-skids。乍一看标题,可能会让人联想到“技能”或者“技巧”,但点进去你会发现,它其实是一个精心整理的Go语言(Golang)学习资源与…...

多核处理器与高速互连技术在雷达信号处理中的应用

1. 现代雷达系统的计算挑战与架构演进 雷达信号处理领域正经历着前所未有的计算需求增长。十年前,单通道雷达系统可能只需要单个处理器就能完成所有实时处理任务。但如今,即使是基础型号的雷达系统,也需要多个处理器协同工作才能满足实时性要…...

终极Windows清理方案:用Windows Cleaner彻底告别C盘爆红困扰

终极Windows清理方案:用Windows Cleaner彻底告别C盘爆红困扰 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到C盘空间不足的警告&#x…...

别再手动算权重了!用SPSSAU搞定面板数据财务排名(熵权TOPSIS保姆级教程)

财务分析新范式:如何用SPSSAU实现面板数据的智能排名决策 财务分析领域正在经历一场静默的革命。当大多数分析师还在Excel中手动计算权重、反复核对公式时,前沿的数据处理工具已经能够将原本需要数天的工作压缩到几分钟内完成。本文将揭示如何利用SPSSAU…...

ChatGPT Adapter:统一AI接口网关,轻松集成多模型服务

1. 项目概述与核心价值最近在折腾AI应用开发,发现一个挺头疼的问题:市面上的AI模型和API接口五花八门,OpenAI有它的标准,Coze有它的玩法,DeepSeek、Cursor、Bing Copilot又各自为政。想在自己的项目里灵活切换或者同时…...

ROS机器人Web控制面板:从架构设计到安全部署的完整实践

1. 项目概述:一个为机器人打造的“驾驶舱”如果你玩过机器人,或者接触过自动化设备,你肯定知道,让机器人动起来只是第一步。真正让人头疼的,往往是后续的“驾驶”和“管理”。代码写好了,硬件连上了&#x…...

日本麻将助手HTTPS配置终极指南:安全连接与本地证书完整教程

日本麻将助手HTTPS配置终极指南:安全连接与本地证书完整教程 【免费下载链接】mahjong-helper 日本麻将助手:牌效防守记牌(支持雀魂、天凤) 项目地址: https://gitcode.com/gh_mirrors/ma/mahjong-helper 日本麻将助手&…...

APKMirror:安全高效的安卓应用管理开源解决方案

APKMirror:安全高效的安卓应用管理开源解决方案 【免费下载链接】APKMirror 项目地址: https://gitcode.com/gh_mirrors/ap/APKMirror 在安卓生态系统中,应用版本管理、安全下载和历史版本追溯一直是普通用户和开发者面临的三大核心痛点。APKMir…...

如何零基础掌握SVG在线编辑器:告别专业软件的高门槛创作

如何零基础掌握SVG在线编辑器:告别专业软件的高门槛创作 【免费下载链接】svgedit Powerful SVG-Editor for your browser 项目地址: https://gitcode.com/gh_mirrors/sv/svgedit 你是否曾经因为复杂的矢量图形软件而望而却步?是否在寻找一款简单…...

别再只调阈值了!用OpenCV的Sobel梯度法提升低对比度图像缺陷检出率

别再只调阈值了!用OpenCV的Sobel梯度法提升低对比度图像缺陷检出率 在工业质检和医学影像领域,低对比度图像中的缺陷检测一直是令人头疼的难题。许多开发者第一反应是反复调整二值化阈值参数,却常常陷入"调高漏检、调低误报"的死循…...

从飞控模拟到游戏UI:Qt姿态仪(ADI)的二次开发与数据接入指南(附源码)

从飞控模拟到科幻游戏:Qt姿态仪组件的跨领域开发实战 在无人机地面站软件中,姿态仪(Attitude Director Indicator)是飞行员判断飞行状态的核心仪表;而在科幻游戏里,类似的仪表盘却可能成为太空舱控制台的视…...

重庆大学LaTeX论文模板终极指南:3步完成专业论文排版

重庆大学LaTeX论文模板终极指南:3步完成专业论文排版 【免费下载链接】CQUThesis :pencil: 重庆大学毕业论文LaTeX模板---LaTeX Thesis Template for Chongqing University 项目地址: https://gitcode.com/gh_mirrors/cq/CQUThesis CQUThesis是专为重庆大学学…...

别再只会拖模块了!用MATLAB Function模块在Simulink里写自定义逻辑(附if/for/persistent实战)

从图形化到代码化:MATLAB Function模块在Simulink中的高阶应用 当Simulink的图形化模块无法满足复杂算法需求时,MATLAB Function模块就像一把瑞士军刀,让工程师能够直接在仿真模型中嵌入自定义代码逻辑。这种从拖拽模块到编写代码的思维转变&…...

基于Next.js的多模型AI聊天界面:统一集成OpenAI、Claude、Gemini与Ollama

1. 项目概述:一个统一的多模型AI聊天界面 如果你和我一样,经常需要在OpenAI的GPT、Anthropic的Claude、Google的Gemini,甚至本地运行的Ollama模型之间来回切换,那你一定体会过那种在多个浏览器标签页、不同风格的界面和API控制台…...

硬件工程师的宝藏工具:手把手教你搭建Part-DB,实现元器件扫码入库与KiCAD联动

硬件工程师的元器件管理革命:Part-DB与KiCAD联动实战指南 作为一名长期与电阻电容打交道的硬件工程师,我最头疼的不是画板子调电路,而是每次打开元件柜时面对的那堆杂乱无章的料盘和标签。直到发现了Part-DB这个开源神器,我的工作…...

安桥TX-NR515功放ARC功能折腾记:从吃灰到点亮DTS,一根HDMI线搞定电视声音

安桥TX-NR515功放ARC功能实战指南:让老设备焕发新声 去年整理客厅时,那台积灰多年的安桥TX-NR515功放再次闯入我的视线。2013年花了大价钱购入这台支持ARC(音频回传通道)的功放,本想着用一根HDMI线就能解决电视声音输出…...

AppAgent:基于视觉的Android应用自动化AI助手实战指南

1. 项目概述:一个能“看懂”手机屏幕并帮你操作App的AI助手 最近在折腾一个挺有意思的开源项目,叫AppAgent。简单来说,它就是一个能“看见”你手机屏幕,然后像真人一样去点击、滑动,帮你完成各种App任务的AI智能体。想…...