2. 开发环境准备:在 Ubuntu 22.04 上搭建基础开发环境
说实话,很多新手在 ArduPilot 仿真联调上栽跟头,十有八九是环境没搭对。我见过太多人花了一整天装工具链,结果编译报错,最后发现是交叉编译链版本不对。所以这一章,咱们把基础打牢。
Ubuntu 22.04 是我个人比较推荐的版本。它稳定,软件源也新。你想想看,如果系统本身就有兼容性问题,后面排查起来会非常痛苦。下面我带你一步步把 Git、Python3、pip 和 gcc-arm-none-eabi 装好,并且验证它们都能正常工作。
2.1 更新系统与安装 Git
拿到一台新 Ubuntu 机器,第一件事就是更新软件源。这就像出门前检查轮胎气压一样,是个好习惯。
sudo apt update
sudo apt upgrade -y
然后安装 Git。Git 是版本控制的基础,ArduPilot 的代码仓库就托管在 GitHub 上。
sudo apt install git -y
装完之后,验证一下版本:
git --version
你应该会看到类似 git version 2.34.1 的输出。如果没看到,检查一下网络或者源配置。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
2.2 安装 Python3 与 pip
ArduPilot 的编译脚本、仿真工具很多都是用 Python 写的。Ubuntu 22.04 默认带了 Python3,但咱们得确认一下版本,顺便把 pip 装上。
python3 --version
sudo apt install python3-pip -y
我建议你检查一下 pip 的版本:
pip3 --version
如果一切正常,你会看到类似 pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10) 的信息。
sudo pip install 来装系统级的 Python 包。我曾经因为这样干,把系统自带的包管理器搞坏了,最后只能重装系统。建议用 --user 参数或者创建虚拟环境。
2.3 安装 gcc-arm-none-eabi 交叉编译链
这是最关键的一步。ArduPilot 编译出来的固件要跑在 STM32 这类 ARM 单片机上,所以咱们需要交叉编译链。说白了,就是在 PC 上编译出能在 ARM 芯片上运行的机器码。
Ubuntu 的官方源里其实有 gcc-arm-none-eabi,但版本比较老。我个人习惯从 ARM 官方获取最新版,避免踩坑。
方法一:通过 apt 安装(简单,但版本可能较旧)
sudo apt install gcc-arm-none-eabi -y
方法二:从 ARM 官方下载(推荐)
去 ARM 的开发者网站下载最新的 Linux 版本。我写这个教程时,推荐的是 10.3-2021.10 或更新的版本。下载后解压,然后把 bin 目录加到 PATH 里。
# 假设你下载到了 ~/Downloads 目录
cd ~/Downloads
tar -xjf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
sudo mv gcc-arm-none-eabi-10.3-2021.10 /opt/
# 配置环境变量(加到 ~/.bashrc 或 ~/.zshrc 里)
echo 'export PATH=$PATH:/opt/gcc-arm-none-eabi-10.3-2021.10/bin' >> ~/.bashrc
source ~/.bashrc
arm-none-eabi-gcc --version
你应该能看到类似 arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release) 的输出。
2.4 验证环境:一个简单的编译测试
光装完不行,得跑个例子验证一下。咱们写一个最简单的 C 程序,用交叉编译链编译成 ARM 的机器码。
创建一个测试文件 test.c:
#include <stdio.h>
int main() {
printf("Hello, ArduPilot!\n");
return 0;
}
然后编译它:
arm-none-eabi-gcc --specs=nosys.specs -o test.elf test.c
如果没报错,说明交叉编译链工作正常。你可以用 file 命令看看生成的文件:
file test.elf
输出应该是 ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV) 之类的信息。看到 ARM 字样,就说明咱们的交叉编译环境没问题。
arm-none-eabi-gcc: not found 的错误。排查了半天,发现是 PATH 没生效。记得 source ~/.bashrc 或者重新打开终端。
2.5 知识体系总览
下面这张图帮你理清今天装的所有东西之间的关系。别小看这些基础工具,它们是整个仿真联调环境的基石。
2.6 常见问题与排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
git: command not found |
Git 未安装或 PATH 未更新 | 重新执行 sudo apt install git |
pip3: command not found |
python3-pip 未安装 | 执行 sudo apt install python3-pip |
arm-none-eabi-gcc: not found |
交叉编译链未加入 PATH | 检查 /opt/ 目录,重新配置 ~/.bashrc |
编译时提示 stdio.h: No such file or directory |
缺少 newlib 库 | 重新安装完整版的 gcc-arm-none-eabi,或添加 --specs=nosys.specs |
好了,到这里基础开发环境就搭好了。你手头现在应该有 Git、Python3、pip 和交叉编译链,并且都验证通过了。这些工具就像厨师手里的刀和砧板,后面咱们切菜(写代码)、炒菜(编译固件)就全靠它们了。