2. 开发环境搭建:Ubuntu 22.04 LTS 安装、Git 配置与 SSH 密钥、Python3 虚拟环境、ARM 交叉编译链与必备工具链
做 ArduPilot 仿真联调,第一步就是把开发环境搭稳。我见过太多人花了一周时间在环境问题上折腾,最后发现只是某个工具版本不对。这一章,咱们就把 Ubuntu 22.04、Git、Python 虚拟环境、ARM 交叉编译链和基础工具链一次性搞定。
核心原则:所有工具版本必须与 ArduPilot 官方推荐的版本对齐。别用太新的,也别用太旧的。稳定第一。
2.1 Ubuntu 22.04 LTS 安装
我个人习惯用 Ubuntu 22.04 LTS 作为主力开发系统。为什么选它?因为 ArduPilot 的 CI 流水线就是跑在这个版本上,兼容性最好。
安装方式有两种:
- 双系统(推荐):如果你有独立显卡,建议直接装双系统。虚拟机跑仿真时,USB 转发和实时性会有问题。
- 虚拟机(尝鲜):用 VMware 或 VirtualBox 也行,但记得给虚拟机分配至少 4 核 CPU 和 8GB 内存。
安装完成后,第一件事就是换源。国内用户不换源,apt 下载能急死人。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源(Ubuntu 22.04)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 更新
sudo apt update && sudo apt upgrade -y
小技巧:装完系统后,顺手装个 build-essential 和 dkms,后面编译内核模块时会用到。
2.2 Git 配置与 SSH 密钥
Git 是咱们和代码仓库打交道的桥梁。ArduPilot 的代码托管在 GitHub 上,所以 SSH 密钥是必须的。
2.2.1 安装与基础配置
sudo apt install git -y
# 配置用户名和邮箱(用你自己的)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 推荐配置:换行符处理
git config --global core.autocrlf input
嗯,这里要注意:core.autocrlf input 这个配置能避免 Windows 和 Linux 混用时换行符乱掉的问题。我在项目中遇到过好几次因为换行符导致编译报错,后来统一设成 input 就再也没出过事。
2.2.2 生成 SSH 密钥
# 生成 ed25519 密钥(比 RSA 更安全、更快)
ssh-keygen -t ed25519 -C "your.email@example.com"
# 一路回车,默认路径是 ~/.ssh/id_ed25519
生成完后,把公钥添加到 GitHub:
cat ~/.ssh/id_ed25519.pub
复制输出内容,登录 GitHub → Settings → SSH and GPG keys → New SSH key,粘贴保存。
避坑指南:我曾经因为没设置 ~/.ssh/config 导致每次 git push 都要输入密码。建议你提前配好:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
测试连接:
ssh -T git@github.com
# 看到 "Hi xxx! You've successfully authenticated" 就对了
2.3 Python3 虚拟环境
ArduPilot 的仿真脚本、MAVSDK、DroneKit 都依赖 Python。我强烈建议用虚拟环境隔离项目依赖,别污染系统 Python。
2.3.1 安装 venv
sudo apt install python3 python3-pip python3-venv -y
2.3.2 创建并激活虚拟环境
# 在项目目录下创建虚拟环境
python3 -m venv ardupilot_env
# 激活环境
source ardupilot_env/bin/activate
# 确认 Python 路径
which python3
# 应该指向 ardupilot_env/bin/python3
激活后,终端前面会出现 (ardupilot_env) 前缀。这时候安装的所有包都只在这个环境里生效。
我的习惯:在项目根目录建一个 .venv 文件夹,然后配到 .gitignore 里。这样团队其他人 clone 后也能快速重建环境。
2.3.3 安装常用 Python 包
pip install --upgrade pip
pip install pymavlink mavproxy dronekit
退出虚拟环境用 deactivate 命令。
2.4 ARM 交叉编译链:gcc-arm-none-eabi
ArduPilot 的飞控固件要编译成 ARM Cortex-M 系列芯片能跑的机器码。咱们的 PC 是 x86 架构,所以需要交叉编译链。
2.4.1 安装方式
我推荐用 ARM 官方提供的预编译包,别用 apt 源里的老版本。
# 下载 ARM 官方工具链(以 12.3 版本为例)
wget https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
# 解压到 /opt
sudo tar -xf arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz -C /opt/
# 添加环境变量
echo 'export PATH=$PATH:/opt/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi/bin' >> ~/.bashrc
source ~/.bashrc
2.4.2 验证安装
arm-none-eabi-gcc --version
# 应该显示 12.3 版本信息
避坑指南:我曾经用 apt 安装的 gcc-arm-none-eabi,版本是 9.x,结果编译 ArduPilot 4.5 时链接器报错。换成官方 12.3 版本后一次通过。所以,一定要用官方最新稳定版。
2.5 必备工具链:CMake、Make、GDB
这三个工具是编译和调试的基石。ArduPilot 从 4.x 开始全面转向 CMake 构建系统,所以 CMake 是重中之重。
| 工具 | 用途 | 安装命令 | 推荐版本 |
|---|---|---|---|
| CMake | 构建系统生成器 | sudo apt install cmake -y |
≥ 3.20 |
| Make | 构建执行器 | sudo apt install make -y |
≥ 4.3 |
| GDB | 调试器 | sudo apt install gdb-multiarch -y |
≥ 12.1 |
安装完成后,验证版本:
cmake --version
make --version
gdb-multiarch --version
为什么用 gdb-multiarch?因为 ArduPilot 固件是 ARM 架构的,普通 gdb 只能调试本地 x86 程序。gdb-multiarch 支持多架构,既能调 x86 也能调 ARM。
2.6 本章知识体系总览
下面这张图把咱们刚才搭建的整个环境串起来了。你想想看,从操作系统到编译工具,再到调试器,每一层都是环环相扣的。
2.7 环境验证清单
所有工具装完后,我建议你跑一遍这个清单,确保每个环节都没问题:
- 系统:
lsb_release -a确认是 Ubuntu 22.04 - Git:
git --version且ssh -T git@github.com成功 - Python:虚拟环境激活后
python3 --version显示 3.10+ - 交叉编译链:
arm-none-eabi-gcc --version显示 12.3 - 工具链:
cmake --version、make --version、gdb-multiarch --version都正常