共计 1998 个字符,预计需要花费 5 分钟才能阅读完成。
背景与痛点
对于刚接触 Apollo 自动驾驶平台的开发者来说,编译源码往往是第一个拦路虎。常见问题包括:

- 环境配置复杂:需要特定版本的 Ubuntu、Docker、CUDA 等组件,版本不匹配会导致后续步骤失败
- 依赖冲突:第三方库(如 Protobuf、Eigen)的版本管理容易出现问题
- 编译失败:大型 C ++ 项目编译时间长,中间错误难以定位
- 资源消耗大:默认配置可能需要 32GB 以上内存,普通开发机难以承受
环境准备
硬件要求
- 推荐配置:
- CPU:Intel i7 或同等性能处理器(至少 4 核)
- 内存:32GB 及以上(16GB 勉强可运行但可能编译失败)
- 存储:SSD 硬盘,至少 100GB 可用空间
- GPU:NVIDIA 显卡(建议 RTX 2060 及以上),需支持 CUDA 11.1
软件要求
- 操作系统:Ubuntu 18.04/20.04 LTS(本文以 20.04 为例)
- Docker:19.03+(必须支持 NVIDIA 容器运行时)
- NVIDIA 驱动:450.80.02+
- 其他工具:
- git
- curl
- vim(或其他编辑器)
详细编译步骤
1. 系统环境初始化
# 安装基础工具
sudo apt update && sudo apt install -y git curl
# 安装 NVIDIA 容器工具包
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update && sudo apt install -y nvidia-docker2
sudo systemctl restart docker
2. 获取 Apollo 源码
# 克隆代码仓库(国内推荐使用镜像源)git clone https://github.com/ApolloAuto/apollo.git
cd apollo
git checkout v10.0.0 # 切换到 10.0 版本
3. 启动 Docker 开发环境
# 构建开发镜像(首次执行需要较长时间)bash docker/scripts/dev_start.sh
# 进入容器
bash docker/scripts/dev_into.sh
4. 编译 Apollo
在 Docker 容器内执行:
# 初始化工作空间
./apollo.sh clean
./apollo.sh build_opt
# 完整编译(- j 参数根据 CPU 核心数调整)./apollo.sh build_opt -j8
常见问题与解决方案
问题 1:Docker 容器启动失败
现象 :执行dev_start.sh 后提示 NVIDIA 驱动相关错误
解决:
- 确认已正确安装 NVIDIA 驱动
- 检查 docker 服务状态:
sudo systemctl status docker - 重新加载配置:
sudo systemctl daemon-reload
问题 2:编译时内存不足
现象:编译过程中被 kill,日志显示 ’OOM’ 错误
解决:
- 临时方案:减少并行编译线程数
./apollo.sh build_opt -j4 # 改为 4 线程 - 长期方案:增加 swap 空间
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
问题 3:Protobuf 版本冲突
现象:编译时提示 ’protobuf version mismatch’
解决:
# 在 Docker 容器内执行
sudo apt remove libprotobuf-dev
./apollo.sh clean
./apollo.sh build_opt
优化建议
-
增量编译:修改代码后只需重新编译变更模块
./apollo.sh build_opt module_name # 例如:planning -
CCache 加速:
echo 'export USE_CCACHE=1' >> ~/.bashrc source ~/.bashrc ccache -M 10G # 设置 10GB 缓存 -
选择性编译:
# 只编译必要模块 ./apollo.sh build_opt cyber perception
总结与展望
成功编译 Apollo 源码只是自动驾驶开发的第一步。建议后续:
-
运行演示程序验证编译结果
# 启动 Dreamview 可视化工具 bash scripts/bootstrap.sh -
阅读模块文档了解系统架构
- 尝试修改控制算法或感知模型
Apollo 作为成熟的自动驾驶平台,其代码质量高、模块划分清晰,是学习自动驾驶技术的优秀开源项目。希望本文能帮助你顺利跨过编译这道门槛,进入更深入的技术探索。
正文完
