RK3308 buildroot —— 交叉编译
本文用于记录RK3308 buildroot交叉编译的过程,由于刚开始学习,方法可能比较笨,欢迎留言交流。本文使用的环境:Ubuntu 24.04.2 LTS一、SDK目录说明我们的整个软件工程目录在:~/Nova-sdk├── build.sh -> device/rockchip/common/scripts/build.sh ---- SDK编译脚本├── app -------------
交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
本文将详细介绍:在 Linux 系统环境下,如何编译出可在 Luckfox Nova RK3308 开发板上运行的单个模块或第三方应用程序。
前言
本文用于记录RK3308 buildroot交叉编译的过程,由于刚开始学习,方法可能比较笨,欢迎留言交流。
本文使用的环境:Ubuntu 24.04.2 LTS
一、SDK目录说明
我们的整个软件工程目录在:~/Nova-sdk

├── build.sh -> device/rockchip/common/scripts/build.sh ---- SDK编译脚本
├── app ----------------------------- 存放上层应用 APP,主要是一些应用 Demo
├── buildroot ----------------------- 基于 Buildroot(2024)开发的根文件系统
├── device/rockchip ----------------- 存放芯片板级配置以及 SDK 编译和打包固件的脚本和文件
├── docs ---------------------------- 存放通用开发指导文档、芯片平台相关文档、Linux 系统开发相关文档、其他参考文档等
├── external ------------------------ 存放第三方相关仓库,包括显示、音视频、摄像头、网络、安全等
├── kernel -------------------------- 存放 Kernel 开发的代码
├── output -------------------------- 存放每次生成的固件信息、编译信息、XML、主机环境等
├── prebuilts ----------------------- 存放交叉编译工具链
├── rkbin --------------------------- 存放 Rockchip 相关二进制和工具
├── rockdev ------------------------- 存放编译输出固件,实际软链接到 output/firmware
├── tools --------------------------- 存放 Linux 和 Window 操作系统下常用工具
├── u-boot -------------------------- 存放基于 v2017.09 版本进行开发的 U-Boot 代码
└── external ------------------------ 存放 SDK 相关库及工具源码
二、Ubuntun24.04环境下编译镜像
1.搭建编译环境和完整编译镜像
1)安装依赖环境。
sudo apt update
sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath \
diffstat binfmt-support qemu-user-static live-build bison flex fakeroot \
cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev \
libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
libmpc-dev bc python-is-python3 python2 curl
2)设置Python环境。
#默认情况下链接的是python3
$ python --version
Python 3.10.12
which python2
sudo ln -sf /usr/bin/python2 /usr/bin/python
如果python2没有安装成功或者无法直接安装,请通过下载安装包的方式进行安装,然后再执行环境设置。
3)从网盘链接下载最新的 SDK,并解压缩文件。
SDK链接:https://pan.baidu.com/s/1zXyd9x21rqhLdIJkafazow?pwd=n973
mkdir Nova-sdk
cd Nova--sdk
tar -xzvf Luckfox_Nova_SDK_250430.tar.gz
4)将解压后的文件进行解包。
.repo/repo/repo sync -l
5)编译镜像。
$ ./build.sh lunch
############### Rockchip Linux SDK ###############
Manifest: luckfox-linux-5.10-rk3308_v1.0_20250407.xml
Log colors: message notice warning error fatal
Parsing supported commands...
Log saved at /home/xt/Luckfox/rk3308/250508/output/sessions/2025-06-19_21-17-41
Pick a defconfig:
1. rockchip_defconfig
2. luckfox_rk3308b_64bit_defconfig
Which would you like? [1]: 2
$ ./build.sh
2.部分编译
在嵌入式系统开发中,固件通常由多个分区镜像组成,如 boot、rootfs、uboot 等。为提升开发效率,常采用“部分编译”的方式,仅针对修改的部分生成对应的镜像文件,而无需重新构建完整系统,从而加快调试与部署流程。 例如,当你修改了内核驱动配置或设备树时,只需重新编译内核并生成 boot.img,然后单独烧录该镜像或将其重新打包进固件中即可。
1)单独编译U-Boot
./build.sh uboot
- 生成镜像文件: rockdev/MiniLoaderAll.bin rockdev/uboot.img
2)单独编译kernel
./build.sh kernel
- 生成镜像文件: rockdev/boot.img
3)固件打包
./build.sh firmware
3.交叉编译
1)查找交叉编译工具
交叉编译工具位于buildroot/output/rockchip_luckfox_rk3308_release/host/usr/bin
输入命令查看编译工具:
cd buildroot/output/rockchip_luckfox_rk3308_release/host/usr/bin
./aarch64-linux-gcc --version
会打印如下信息:

2)交叉编译文件
首先创建一个自己的工程目录,新键一个hello.c用于测试

#include <stdio.h>
int main(void)
{
printf("Hello World!!!\r\n");
return 0;
}
方式一:直接编译
#注意文件路径根据自己实际情况填写
./aarch64-linux-gcc ~/myProject/hello.c -o ~/myProject/hello

方式二:修改环境变量
- 设置交叉编译工具的环境变量,如果需要永久生效,编辑配置文件(如
.bashrc或.profile)。
vim ~/.bashrc
-
添加工具链路径,将交叉编译工具的路径添加到系统的 PATH 环境变量中:
// 注意:根据自己的SDK路径填写
export PATH=~/Nova-sdk/buildroot/output/rockchip_luckfox_rk3308_release/host/usr/bin:$PATH
- 更新环境变量,执行以下命令使配置生效。
source ~/.bashrc
- 使用交叉编译工具编译程序。
aarch64-linux-gcc hello.c -o hello
4.部署到开发板查看
可以通过ADB命令将文件传输到开发板,然后测试,效果如下,说明成功。

更多推荐




所有评论(0)