你好,@ximenqin!
你观察得很仔细!这确实是一个版本差异问题。让我帮你理清原因和解决方案:
核心结论
你拉取的 GitHub 源码可能是旧版本或 master 分支,而 S100 的适配是在较新的分支/版本中加入的。
S100 的 PLATFORM_S100 编译支持不是通过修改 CMakeLists.txt 硬编码实现的,而是通过以下方式:
- 依赖库版本:需要匹配 S100 的
hobot_dnn库版本 - Docker 镜像环境:S100 的交叉编译 Docker 中已预置了正确的配置
- 分支选择:GitHub 上可能有专门的 S100 分支或 Tag
排查步骤
步骤 1: 确认你使用的 Docker 镜像版本
首先在 S100 的 Docker 环境中检查已安装的 hobot_dnn 版本:
# 进入 S100 交叉编译 Docker 后
dpkg -l | grep hobot-dnn
# 或
apt list --installed | grep hobot
关键:确保你使用的 Docker 镜像是 S100 专用的,例如:
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_cpu:v3.7.0registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_gpu:v3.7.0
步骤 2: 检查 Docker 环境中的 hobot_dnn 源码
不要从 GitHub 拉取,直接使用 Docker 环境中预置的源码:
# 在 S100 Docker 内部
find /opt -name "hobot_dnn" -type d 2>/dev/null
# 或
find /root -name "hobot_dnn" -type d 2>/dev/null
# 查看 CMakeLists.txt
cat /path/to/hobot_dnn/dnn_node/CMakeLists.txt | grep -i s100
Docker 环境中预置的源码已经包含了 S100 的适配配置。
步骤 3: 如果必须从 GitHub 拉取
请检查正确的分支或 Tag:
# 查看仓库的 branches 和 tags
git clone https://github.com/D-Robotics/hobot_dnn.git
cd hobot_dnn
git branch -a
git tag -l | grep -i s100
# 可能需要切换到特定分支
git checkout s100_develop # 示例分支名,需确认实际存在
实际可用的编译方案
推荐方案:直接使用 Docker 环境中的源码,不要自己拉取 GitHub。
完整编译流程(在 S100 Docker 中)
# 1. 启动 S100 交叉编译 Docker
docker run -it --rm \
-v /path/to/your/workspace:/root/tros_ws \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_cpu:v3.7.0 \
bash
# 2. 在 Docker 内部,使用环境预置的 hobot_dnn
cd /root/tros_ws
# 3. 编译 dnn_node(Docker 中已有正确的 CMake 配置)
colcon build --packages-select dnn_node --cmake-args -DPLATFORM_S100=ON
# 4. 验证编译结果
ls -l install/dnn_node/lib/dnn_node/
为什么 GitHub 源码没有 S100 配置?
可能的原因:
| 原因 | 说明 |
|---|---|
| 版本滞后 | GitHub master 分支可能还未合并 S100 的适配代码 |
| 分支管理 | S100 的适配可能在独立分支(如 s100_develop) |
| 内部版本 | 完整的 S100 支持可能只在官方 Docker 镜像中提供 |
| 依赖库决定 | S100 适配主要由 libhb_dnn.so 库决定,而非 CMakeLists.txt |
建议操作
- 优先使用 Docker 预置源码:不要从 GitHub 拉取,直接用 Docker 环境中的
- 检查 OE 版本:确认你的 OE 工具链版本与板端系统版本匹配(参考 34462)
- 查看官方文档:S100 的编译说明可能在 RDK DOC 中有详细记录
如果你能提供以下信息,我可以更精准地帮你定位:
- 你使用的 Docker 镜像版本(
docker images输出) - 你从 GitHub 拉取的具体分支/commit
- 编译时的具体报错信息
需要我帮你查找 S100 专用的 Docker 镜像下载链接或 OE 版本对应关系吗?