你好 @lettersony,关于 RDK X5 在 X86 平台交叉编译的问题,结合社区现有资源给你明确答复:
结论
是的,官方提供交叉编译 Docker 镜像,你看到的 pc_tros_ubuntu22.04_v1.0.0.tar.gz 就是用于 RDK X5 的交叉编译环境。
关键问题解答
1. 镜像版本兼容性
| 项目 | 说明 |
|---|---|
| 镜像发布日期 | 24-Apr-2024 |
| 适用系统 | RDKOS V3.x 系列(包括 V3.5.0) |
| ROS2 版本 | Humble(Ubuntu 22.04) |
| 架构 | X86 主机 → ARM64 目标 |
镜像虽然发布于 2024 年 4 月,但编译的程序可以在 RDKOS V3.5.0 上运行。因为:
- 交叉编译依赖的是板端 sysroot(系统库),而非内核版本
- RDKOS V3.x 系列保持 ABI 兼容
- 只要不修改内核驱动,用户态程序兼容性良好
2. 官方交叉编译步骤
# === 在 X86 主机上执行 ===
# 1. 下载镜像(约 2.5GB)
wget http://archive.d-robotics.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu22.04_v1.0.0.tar.gz
# 2. 加载镜像
sudo docker load --input pc_tros_ubuntu22.04_v1.0.0.tar.gz
# 3. 查看镜像 ID
sudo docker images | grep pc_tros
# 4. 创建工作目录
mkdir -p ~/rdk_cross_compile/cc_ws/tros_ws/src
# 5. 启动容器并挂载目录
sudo docker run -it --rm \
--entrypoint="/bin/bash" \
-v ~/rdk_cross_compile:/work \
<IMAGE_ID> # 替换为实际 IMAGE ID
# === 在 Docker 容器内执行 ===
# 6. 获取配置文件
cd /work/cc_ws/tros_ws
git clone https://github.com/D-Robotics/robot_dev_config.git -b develop
cd robot_dev_config
# 7. 切换到稳定版本(关键!)
git tag --list
git reset --hard tros_2.3.2 # 使用稳定 tag
# 8. 拉取源码
cd ..
vcs-import src < ./robot_dev_config/ros2_release.repos
# 9. 交叉编译 X5 版本
bash ./robot_dev_config/build.sh -p X5
3. 版本匹配建议
| RDKOS 版本 | 推荐 TROS 版本 | 备注 |
|---|---|---|
| V3.0.x - V3.5.x | tros_2.3.2 |
稳定版本,社区验证最多 |
| V3.5.0+ | 查看板端 apt list tros-* |
确认板端已安装的 TROS 版本 |
检查板端 TROS 版本:
# 在 RDK X5 上执行
apt list | grep tros
cat /etc/version
4. 常见问题
Q1: 镜像版本旧,是否支持 V3.5.0?
支持。用户态程序兼容性良好,除非你修改了内核驱动
Q2: 下载太慢怎么办?
# 使用 aria2 断点续传
sudo apt install aria2
aria2c -x 16 -s 16 -k 1M \
http://archive.d-robotics.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu22.04_v1.0.0.tar.gz
Q3: 编译自己的功能包?
- 将你的 package 放在
cc_ws/tros_ws/src/目录下 - 使用同样的
build.sh -p X5编译 - 生成的
install/目录拷贝到板端/opt/tros/
相关资源
建议
- 先走通官方流程:严格按照文档编译一次官方示例
- 验证版本:在板端执行
apt list | grep tros确认版本 - 再开发自己的包:编译成功后再添加自己的功能包
如果遇到具体编译报错,欢迎把错误日志贴到社区,方便定位问题。