3. Ubuntu 系统准备:搭建你的飞控开发环境

说实话,很多新手在飞控开发上栽跟头,不是代码写不对,而是环境没搭好。我见过太多人花了两天时间编译,最后发现是软件源配错了。这一章,咱们就把 Ubuntu 系统准备这件事做扎实。

我个人习惯用 Ubuntu 20.04 LTS 做飞控开发。为什么?因为 ArduPilot 的官方 CI 和大量社区用户都在这个版本上验证过。当然,22.04 也能用,但有些依赖包需要额外处理。咱们一步步来。

3.1 选择 Ubuntu 版本:20.04 还是 22.04?

先别急着装系统,想清楚你要什么。我列个对比表,你一看就明白。

对比项 Ubuntu 20.04 LTS Ubuntu 22.04 LTS
ArduPilot 官方支持 完全支持,CI 默认环境 支持,但部分旧工具链需手动适配
Python 版本 Python 3.8(稳定) Python 3.10(较新,部分库兼容性需注意)
GCC 工具链 GCC 9.4(与 ARM 交叉编译器配合良好) GCC 11.4(编译某些旧版固件可能报错)
长期维护周期 至 2025 年 4 月 至 2027 年 4 月
我的推荐 首选,省心 可以,但需要多踩几个坑

我的建议很直接:如果你是第一次搭建,选 20.04。我在项目里遇到过用 22.04 编译旧版 ArduPilot 固件时,因为 GCC 版本太高导致链接错误,折腾了大半天。说白了,飞控开发追求的是稳定,不是追新。

3.2 安装 Ubuntu 系统

安装过程我就不啰嗦了,网上教程一大堆。但有几个关键点,我得提醒你。

⚠️ 分区建议: 飞控开发需要大量磁盘空间存放交叉编译器、固件源码和编译中间文件。建议给 / 根分区至少分配 50GB,如果条件允许,100GB 更稳妥。我见过有人只分了 20GB,编译到一半磁盘满了,那叫一个尴尬。

安装时记得勾选「为图形或无线硬件安装第三方软件」。这个选项会帮你装好显卡驱动和 Wi-Fi 固件,省去后续不少麻烦。

3.3 配置软件源:让 apt 飞起来

系统装好了,第一件事就是换源。默认的官方源在国外,下载速度慢得让人抓狂。你想想看,每次 apt update 都要等几分钟,多耽误事。

我个人习惯用清华源或中科大源。操作很简单:

# 备份原始源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 编辑源文件
sudo vim /etc/apt/sources.list

然后把里面的内容全部替换成以下内容(以 Ubuntu 20.04 清华源为例):

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

如果你是 22.04,把 focal 换成 jammy 就行。

换完源后,执行更新:

sudo apt update
sudo apt upgrade -y
💡 小技巧: 更新时如果遇到 GPG 密钥错误,别慌。执行 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 后面跟报错的那串密钥 就能解决。我刚开始搞的时候也被这个吓到过,其实很常见。

3.4 安装基础开发工具

源配好了,接下来装工具。这些是飞控开发的「敲门砖」,缺一不可。

3.4.1 核心工具安装

打开终端,一行命令搞定:

sudo apt install -y git vim curl wget build-essential cmake

我来解释一下每个工具的用途:

工具 用途 为什么重要
git 版本控制 拉取 ArduPilot 源码、管理自己的代码
vim 文本编辑器 修改配置文件、写代码(虽然我更喜欢 VSCode,但服务器上 vim 是标配)
curl / wget 网络请求工具 下载工具链、固件、依赖包
build-essential 编译工具链 包含 GCC、G++、make 等,编译 C/C++ 代码必备
cmake 构建系统 ArduPilot 使用 CMake 管理编译流程

3.4.2 验证安装

装完之后,验证一下是否成功:

git --version
vim --version
curl --version
gcc --version
cmake --version

每个命令都应该返回版本号。如果哪个没出来,多半是安装失败了,重新执行 sudo apt install 就行。

🔧 我曾经踩过的坑: 有一次我装完系统后直接开始拉 ArduPilot 源码,结果编译时报错说找不到 cmake。一查才发现,我装的 Ubuntu 是最小化安装,build-essential 和 cmake 都没预装。从那以后,我每次装完系统第一件事就是把这几个工具装齐,省得后面抓狂。

3.5 配置 Git 用户信息

Git 装好了,先配一下用户信息。这不是可选项,是必选项。因为 ArduPilot 的提交记录会用到这些信息。

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

我个人习惯再加几个配置:

git config --global core.editor vim
git config --global color.ui true
git config --global pull.rebase false

这些配置能让 Git 用起来更顺手。尤其是 color.ui true,让终端里的 Git 输出带颜色,一眼就能看出文件状态。

3.6 本章知识体系总览

说了这么多,咱们用一张图把整个流程串起来。你跟着这个流程走,不会乱。

Ubuntu 系统准备流程 选择 Ubuntu 版本 安装 Ubuntu 系统 配置软件源 安装基础开发工具 验证安装 & 配置 Git 💡 每一步完成后,建议重启终端或执行 source ~/.bashrc 确保环境变量生效

3.7 验证环境是否就绪

最后,咱们跑一个简单的测试,确保环境没问题。创建一个测试文件:

mkdir -p ~/test_env
cd ~/test_env
echo '#include <stdio.h>
int main() {
    printf("飞控开发环境准备就绪!\n");
    return 0;
}' > test.c

gcc test.c -o test
./test

如果终端输出「飞控开发环境准备就绪!」,恭喜你,环境搭好了。

💡 额外建议: 我习惯在 ~/.bashrc 里加一行 export PATH=$PATH:~/ardupilot/Tools/autotest,这样后面用 ArduPilot 的测试工具时不用每次都输完整路径。当然,这是后话了,你先记住有这个技巧就行。