跳到主要内容

RV1106 板端程序上手:交叉编译、VS Code 远程开发与部署

1672 字约 4 分钟更新于 2026-10-163 次阅读#luckfox#rv1106#嵌入式#交叉编译#vscode

这份笔记记录怎么在 RV1106 板子上跑自己写的程序。VM 负责交叉编译,板子负责运行,中间通过 scp 或 make run 部署。

一、一句话原理

交叉编译出来的程序只能在板子上跑。

VM(x86_64)负责编译,板子(ARM)负责运行。

二、为什么会报 Exec format error

在 VM 上执行 ./hello 就会报这个:VM 是 x86_64 的 Ubuntu,而 hello 是 32 位 ARM 程序。

这不是程序写错了,是架构不对。

三、环境速查

项目 值
VM wangbeihong@10.0.0.245(密码 wang)
板子 10.0.0.214,主机名 luckfox-502d,root 密码 luckfox
项目目录(VM) ~/dev/rv1106-apps/rv1106-hello
同一目录(容器里) /home/luckfox-dev/rv1106-apps/rv1106-hello
工具链 ~/luckfox-pico/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/

四、日常循环

改 hello.c → make run → 看板子的输出。不用重新刷固件。

五、做法一:一条命令

依次执行:

cd ~/dev/rv1106-apps/rv1106-hello
make run

会问你两次密码,都是板子密码 luckfox:

  • 第一次是 scp(传文件)
  • 第二次是 ssh(执行)

看到 hello from board 就成功了。

六、做法二:拆开做

# 1) 编译,产物是 ./hello
make
file hello          # 应显示 ARM, EABI5, statically linked
 
# 2) 传到板子的 /tmp
scp hello root@10.0.0.214:/tmp/      # 密码 luckfox
 
# 3) 登录板子
ssh root@10.0.0.214                   # 密码 luckfox
 
# 4) 提示符变成 root@luckfox-502d:~# 之后,在这里执行:
chmod +x /tmp/hello
/tmp/hello                            # 输出 hello from board
exit                                  # 退出板子,回到 VM

七、分清两个提示符

提示符 是什么 干什么
wangbeihong@wangbeihong-rv1106:~$ VM(x86_64) 写代码、编译、scp
root@luckfox-502d:~# 板子(ARM) 运行 ARM 程序

在 VM 上跑 ARM 程序必定失败,看到 Exec format error 就是跑错地方了。

八、在容器里编译

依次执行:

bash ~/scripts/run-luckfox.sh
cd /home/luckfox-dev/rv1106-apps/rv1106-hello
make

容器只挂载两个目录,注意路径对应:

VM(VS Code 里看到的) 容器里
~/dev /home/luckfox-dev
~/luckfox-pico /home/luckfox-pico

九、常见坑

  • 不加 -static:程序拷到板子可能报 not found(库版本对不上)。Makefile 里已经加了,别删。
  • 板子 IP 变了:BOARD_IP=10.0.0.x make run。
  • 每次要输密码:正常。想免密可以 ssh-keygen + ssh-copy-id root@10.0.0.214。
  • make deploy / make run 报 ssh 连接超时:先 ping 10.0.0.214 确认板子在线。

相关文章


评论

评论区由 giscus 提供(基于 GitHub Discussions),内容会保存在 GitHub 上;详见《隐私政策》。