Hello 快速入门
本章节将讲解如何在 DShanPi-R1 Buildroot 系统上编译并运行第一个程序:Hello World。
1. 交叉编译简介
在 PC (Ubuntu) 上直接编译的程序无法在 ARM 开发板上运行,因为两者的指令集架构不同。
为什么需要交叉编译?
- PC (Ubuntu): 通常使用 x86/x64 架构。
- 开发板 (DShanPi-R1): 使用 ARM64 (aarch64) 架构。
因此,我们需要使用 交叉编译工具链,在 PC 上生成适用于 ARM 开发板的可执行文件。
DShanPi-R1 Buildroot SDK 提供的交叉编译器路径通常如下(请根据实际 SDK 路径调整):
/home/ubuntu/100ask-rk3568_linux5.1_sdk/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
为方便使用,建议将编译器路径添加到环境变量,或设置别名。
2. 编写代码
在 Ubuntu 主机上创建一个名为 helloworld.c 的文件,内容如下:
helloworld.c
#include <stdio.h>
int main()
{
printf("RK3568, Hello World!\n");
return 0;
}
3. 编译代码
使用交叉编译器进行编译。
命令示例:
# 请将路径替换为您实际的 SDK 路径
/home/ubuntu/100ask-rk3568_linux5.1_sdk/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc helloworld.c -o helloworld
验证文件类型:
编译完成后,使用 file 命令检查生成的文件是否为 ARM64 格式:
file helloworld
输出示例:
helloworld: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, with debug_info, not stripped
提示
看到 ARM aarch64 字样说明编译成功,该文件可以在开发板上运行。
4. 上传与运行
准备工作
- 确保开发板已启动。
- 确保已通过 ADB 连接开发板(参考 ADB 功能使用指南)。
- 确保已连接串口终端(用于查看运行结果,参考 连接串口终端)。
上传程序
在 Ubuntu 主机上,使用 adb push 命令将编译好的程序上传到开发板的 /mnt/udisk/ 目录。
adb push helloworld /mnt/udisk/
输出示例:
helloworld: 1 file pushed. 3.8 MB/s (15416 bytes in 0.004s)
运行程序
在开发板的串口终端中,执行以下操作:
-
进入目录:
cd /mnt/udisk/ -
查看文件:
ls
# 应能看到 helloworld 文件 -
运行程序:
./helloworld运行结果:
RK3568, Hello World!
成功
如果终端打印出 RK3568, Hello World!,恭喜您,您已成功在 DShanPi-R1 上运行了第一个应用程序!