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

169 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/Makefile` 和 `build_main.sh` 中的 `SDK_ROOT` 变量
### 2. 上传代码到服务器
`avaota_app_demo` 文件夹上传到:
```
/home/rongye/ProgramFiles/AvaotaF1/avaota_app_demo
```
### 3. SSH 连接到服务器
```bash
ssh rongye@<服务器IP>
```
### 4. 验证 Makefile 配置
```bash
cd ~/ProgramFiles/AvaotaF1/avaota_app_demo/src
grep "USE_MUSL" Makefile
```
应该看到:
```makefile
USE_MUSL := 1
```
### 5. 清理并编译
```bash
cd ~/ProgramFiles/AvaotaF1/avaota_app_demo
# 清理
cd src
make clean
# 编译
cd ..
./build_main.sh
```
### 5. 验证编译结果
```bash
# 检查动态链接器(关键!)
strings build/bin/avaota_client | grep "/lib/ld-"
```
**正确结果**
```
/lib/ld-musl-riscv32.so.1
```
**错误结果**(如果看到这个说明还在用 glibc
```
/lib/ld-linux-riscv32-ilp32d.so.1
```
### 6. 上传到开发板
```bash
scp build/bin/avaota_client root@<开发板IP>:/tmp/avaota_client_musl
```
### 7. 在开发板上运行
```bash
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
```
**解决**:
```bash
# 查找工具链
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](MUSL_COMPILE.md)
---
## 📚 相关文档
- **[MUSL_COMPILE.md](MUSL_COMPILE.md)** - 完整的 musl 工具链编译指南
- **[../../docs/Day9.md](../../docs/Day9.md)** - Day 9 开发日志(问题发现过程)
- **[../../docs/board_test_checklist.md](../../docs/board_test_checklist.md)** - 板上测试清单
- **[../../docs/musl_toolchain_fix.md](../../docs/musl_toolchain_fix.md)** - 工具链问题修复指南
---
## ✅ 编译验证清单
- [ ] 修改后的代码已上传到服务器
- [ ] Makefile 中 `USE_MUSL := 1`
- [ ] musl 工具链路径存在
- [ ] `make clean` 清理完成
- [ ] 编译成功,生成 `build/bin/avaota_client`
- [ ] `strings` 检查链接器为 `ld-musl-riscv32.so.1`
- [ ] 程序已上传到开发板
- [ ] `ldd` 正常显示依赖
- [ ] 程序成功运行
---
**祝编译顺利!** 🚀