2、宿主机环境准备:Ubuntu 22.04 LTS 系统安装与基础配置,必备开发工具(Git、CMake、Ninja)安装
做飞控中间件开发,宿主机环境就是你的「作战基地」。我见过不少朋友在环境配置上栽跟头,折腾一整天结果编译都过不了。说实话,这步要是没弄好,后面全是坑。今天咱们就把 Ubuntu 22.04 LTS 从安装到工具链配齐,一步到位。
2.1 为什么选 Ubuntu 22.04 LTS?
你可能要问:那么多 Linux 发行版,为什么偏偏选这个?
我个人习惯是跟着 LTS 版本走。22.04 是 2022 年 4 月发布的长期支持版,官方维护到 2027 年。对于飞控这种需要稳定运行的环境来说,LTS 版本意味着你不会因为系统升级突然把工具链搞崩。
另外,ROS 2 的 Humble 版本就是基于 22.04 的。如果你后面要做无人机集群或者机载视觉,这个组合会省很多事。我在项目里吃过亏——用非 LTS 版本,半年后系统大版本更新,一堆依赖库不兼容,那叫一个酸爽。
2.2 系统安装与基础配置
2.2.1 下载与制作启动盘
去 Ubuntu 官网下载 22.04 LTS 的 ISO 镜像。我建议用 Rufus(Windows)或 balenaEtcher(跨平台)制作启动 U 盘。注意一点:制作时选择「DD 模式」而不是「ISO 模式」,否则有些主板会不认。
嗯,这里有个小坑——如果你用的是 Ventoy,记得把 ISO 放到 U 盘后校验一下 MD5。我曾经因为镜像下载不完整,安装到一半报错,白白浪费半小时。
2.2.2 磁盘分区建议
飞控开发涉及大量源码下载和编译,磁盘空间要留足。我的建议是:
| 分区 | 大小 | 挂载点 | 说明 |
|---|---|---|---|
| /boot | 1 GB | /boot | 引导分区,别太小 |
| SWAP | 内存大小 × 1.5 | — | 编译大型项目时有用 |
| / | 50 GB | / | 系统根分区 |
| /home | 剩余全部 | /home | 你的工作目录放这里 |
如果你打算在虚拟机里装,我给个经验值:至少分配 4 核 CPU、8 GB 内存、80 GB 磁盘。别问我怎么知道的——第一次用 2 核 4GB 编译 PX4,风扇狂转了一个小时还没完。
2.2.3 安装后的基础配置
装完系统第一件事,换源。国内用户不换源的话,apt 下载速度会让你怀疑人生。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源(22.04 代号 jammy)
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
然后装一些基础工具,这些是后面编译飞控中间件必须的:
sudo apt install -y build-essential gcc g++ gdb make
sudo apt install -y vim curl wget net-tools
sudo apt install -y python3 python3-pip python3-venv
2.3 必备开发工具安装
好,系统准备好了。接下来装三个核心工具:Git、CMake、Ninja。这三个是飞控中间件跨平台编译的「三驾马车」。
2.3.1 Git:版本控制与源码管理
Git 的重要性不用我多说。飞控项目动辄几十万行代码,没有版本控制你根本没法协作。
sudo apt install -y git
# 配置基本信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 推荐配置:解决中文乱码
git config --global core.quotepath false
git config --global gui.encoding utf-8
我个人习惯还会配一个别名:
git config --global alias.lg "log --oneline --graph --all --decorate"
这样用 git lg 就能看到漂亮的提交历史树。你在看 PX4 或 ArduPilot 的提交历史时,这个命令特别有用。
git config --global credential.helper store
2.3.2 CMake:跨平台构建系统
CMake 是飞控中间件编译的核心。它不直接编译代码,而是生成 Ninja 或 Makefile 能读的构建文件。
Ubuntu 22.04 自带的 CMake 版本是 3.22,够用。但如果你需要最新特性,我建议从源码装:
# 方法一:apt 安装(推荐,省事)
sudo apt install -y cmake cmake-gui
# 方法二:从 Kitware 官方仓库安装(获取最新版)
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add -
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main'
sudo apt update
sudo apt install -y cmake
验证一下:
cmake --version
# 输出类似:cmake version 3.22.1
我在项目中遇到过一个问题:CMake 找不到某些库。后来发现是 CMAKE_PREFIX_PATH 没设对。建议你在 ~/.bashrc 里加上:
export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH
2.3.3 Ninja:极速构建工具
Ninja 是 Make 的替代品,特点是快。说白了,Make 是 1990 年代的设计,Ninja 是 2010 年代的产物。对于飞控这种大型 C++ 项目,Ninja 能省下你不少喝咖啡的时间。
sudo apt install -y ninja-build
# 验证
ninja --version
# 输出类似:1.10.1
Ninja 本身不直接使用,而是通过 CMake 调用。你只需要在 CMake 配置时加上 -G Ninja:
cmake -B build -G Ninja
cmake --build build
对比一下速度:同样一个 PX4 固件,用 Make 编译要 15 分钟,Ninja 只要 8 分钟。你想想看,一天编译十次,省下来的时间够你多睡一小时了。
2.4 环境验证:跑一个最小示例
工具装完了,咱们跑个例子验证一下。写一个简单的 C++ 程序,用 CMake + Ninja 编译:
# 创建项目目录
mkdir -p ~/hello_fly && cd ~/hello_fly
# 写一个 main.cpp
cat > main.cpp << 'EOF'
#include <iostream>
int main() {
std::cout << "飞控中间件编译环境就绪!" << std::endl;
return 0;
}
EOF
# 写 CMakeLists.txt
cat > CMakeLists.txt << 'EOF'
cmake_minimum_required(VERSION 3.16)
project(HelloFly)
add_executable(hello_fly main.cpp)
EOF
# 用 Ninja 构建
cmake -B build -G Ninja
cmake --build build
# 运行
./build/hello_fly
如果看到输出「飞控中间件编译环境就绪!」,恭喜你,环境配好了。
Could not find Ninja 错误,八成是 ninja-build 没装对。用 which ninja 检查一下,如果没找到,重新执行 sudo apt install --reinstall ninja-build。
2.5 本章知识体系
下面这张图总结了本章的核心逻辑,你可以对照着检查自己是否都掌握了:
这张图把本章内容串起来了:从系统安装 → 基础配置 → 三大工具 → 环境验证,每一步都是下一环的基础。你按这个顺序来,基本不会出岔子。
公众号:蓝海资料掘金营,微信deep3321