Files
NaviGlassClient/avaota_app_demo/README.md
2025-12-31 15:13:39 +08:00

3.8 KiB
Raw Blame History

Avaota F1 应用程序编译

更新时间: 2025-12-04
重要: 必须使用 musl 工具链编译,开发板使用 musl libc 1.2.4


🚨 重要提示

开发板运行的是 musl libc 1.2.4,不是 glibc

  • 正确: 使用 nds32le-linux-musl-v5d 工具链
  • 错误: 使用 nds32le-linux-glibc-v5d 工具链(编译的程序无法运行)

📋 快速编译步骤

1. 准备 Tina SDK

将 Tina SDK 放置到以下路径:

/home/rongye/ProgramFiles/AvaotaF1/avaota_sdk/tina-v821-release

如需修改路径,请同时更新 src/Makefilebuild_main.sh 中的 SDK_ROOT 变量

2. 上传代码到服务器

avaota_app_demo 文件夹上传到:

/home/rongye/ProgramFiles/AvaotaF1/avaota_app_demo

3. SSH 连接到服务器

ssh rongye@<服务器IP>

4. 验证 Makefile 配置

cd ~/ProgramFiles/AvaotaF1/avaota_app_demo/src
grep "USE_MUSL" Makefile

应该看到:

USE_MUSL := 1

5. 清理并编译

cd ~/ProgramFiles/AvaotaF1/avaota_app_demo

# 清理
cd src
make clean

# 编译
cd ..
./build_main.sh

5. 验证编译结果

# 检查动态链接器(关键!)
strings build/bin/avaota_client | grep "/lib/ld-"

正确结果

/lib/ld-musl-riscv32.so.1

错误结果(如果看到这个说明还在用 glibc

/lib/ld-linux-riscv32-ilp32d.so.1

6. 上传到开发板

scp build/bin/avaota_client root@<开发板IP>:/tmp/avaota_client_musl

7. 在开发板上运行

ssh root@<开发板IP>

chmod +x /tmp/avaota_client_musl
ldd /tmp/avaota_client_musl  # 应该正常显示依赖
/tmp/avaota_client_musl      # 运行程序

📁 文件说明

avaota_app_demo/
├── src/                    # 源代码目录
│   ├── main.cpp           # 主程序
│   ├── audio/             # 音频模块
│   ├── camera/            # 摄像头模块
│   ├── imu/               # IMU 传感器
│   ├── network/           # 网络通信
│   ├── utils/             # 工具函数
│   └── Makefile           # 编译配置(已设置 USE_MUSL=1
├── build_main.sh          # 构建脚本
├── MUSL_COMPILE.md        # 详细编译指南
└── README.md              # 本文件

🔧 如果遇到问题

问题 1: 找不到 musl 工具链

错误:

make: /home/rongye/.../nds32le-linux-musl-v5d/bin/riscv32-linux-musl-gcc: No such file or directory

解决:

# 查找工具链
cd ~/ProgramFiles/AvaotaF1/avaota_sdk/tina-v821-release
find . -name "*musl*.tar*" 2>/dev/null

# 如果找到压缩包,解压
cd out/toolchain
tar -xJf nds32le-linux-musl-v5d.tar.xz

详细故障排查请参考 MUSL_COMPILE.md


📚 相关文档


编译验证清单

  • 修改后的代码已上传到服务器
  • Makefile 中 USE_MUSL := 1
  • musl 工具链路径存在
  • make clean 清理完成
  • 编译成功,生成 build/bin/avaota_client
  • strings 检查链接器为 ld-musl-riscv32.so.1
  • 程序已上传到开发板
  • ldd 正常显示依赖
  • 程序成功运行

祝编译顺利! 🚀