3. 开发环境准备:主机Linux发行版选择与配置

做嵌入式开发,第一件事就是选对主机环境。我见过不少新手在Windows上折腾交叉编译,最后被路径分隔符和权限问题搞得焦头烂额。说实话,直接用Linux做宿主机,能省掉80%的麻烦。

3.1 为什么选Ubuntu 22.04 LTS?

Linux发行版那么多,为什么我推荐Ubuntu 22.04?说白了,就三个理由:

  • LTS长期支持——到2027年才结束维护,你做完这个课程它还在更新
  • 软件源最全——Qt、交叉编译工具链、各种依赖,apt install一把梭
  • 社区活跃——遇到坑,StackOverflow上基本都有答案

我个人习惯用LTS版本做开发机。以前在Ubuntu 20.04上搭过一套环境,后来升到22.04,迁移成本几乎为零。你想想看,如果选一个非LTS版本,半年后EOL了,你还得重装系统,那多折腾。

核心原则:宿主机系统越稳定,嵌入式开发越省心。Ubuntu 22.04是目前平衡兼容性和新特性的最佳选择。

3.2 虚拟机 vs 双系统,怎么选?

这个问题我经常被问到。直接给结论:

对比项 虚拟机方案 双系统方案
硬件资源 共享内存/CPU,性能损失约10-15% 独占硬件,性能无损失
USB设备透传 需要配置,部分调试器不稳定 原生支持,即插即用
磁盘空间 动态分配,初始20GB够用 至少预留80GB
切换成本 Windows/Linux随时切换 必须重启
适合场景 学习、轻量开发 量产项目、硬件调试

我的建议是:学习阶段用虚拟机,做产品了再上双系统。我在公司带新人时,统一让他们用VirtualBox装Ubuntu 22.04。等他们真正开始调驱动、烧写板子时,再切到双系统。

注意:如果你用虚拟机,务必开启VT-x/AMD-V硬件虚拟化。否则交叉编译时,一个Qt项目能编译半小时,你会崩溃的。

3.3 虚拟机配置实战(VirtualBox + Ubuntu 22.04)

这里我直接给出我的标准配置,照着做就行:

  1. 下载镜像:ubuntu-22.04.3-desktop-amd64.iso
  2. 新建虚拟机:类型选Linux,版本选Ubuntu 22.04 LTS
  3. 内存分配:至少8GB,推荐16GB
  4. 处理器:至少2核,推荐4核
  5. 磁盘:动态分配,上限80GB

小技巧:安装时选择"最小安装",能省掉LibreOffice等用不到的软件包。后面需要什么再装什么,系统更干净。

3.4 必要的开发工具安装

系统装好后,第一件事就是装工具。我列一个最小清单:

# 更新软件源
sudo apt update && sudo apt upgrade -y

# 基础开发工具
sudo apt install -y build-essential cmake git vim

# 网络工具
sudo apt install -y net-tools openssh-server curl

# Qt开发依赖(提前装好,后面省事)
sudo apt install -y libgl1-mesa-dev libfontconfig1-dev libfreetype6-dev

这里我重点说几个工具:

3.4.1 Git——版本控制必备

做嵌入式开发,代码版本管理是基本功。我习惯用git + 私有仓库管理BSP和Qt工程。配置一下:

git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git config --global core.editor vim

3.4.2 Vim——服务器上的救命稻草

你可能用VS Code做主力编辑器,但SSH到开发板或服务器上时,只有vim能用。我建议至少学会:i插入、:wq保存退出、/搜索。够用了。

3.4.3 SSH——远程开发的桥梁

交叉编译经常需要把代码传到服务器或开发板上。检查SSH服务状态:

sudo systemctl status sshd
# 如果没启动:
sudo systemctl enable --now sshd

我曾经在调试一块i.MX6ULL板子时,串口线突然坏了。还好SSH还通着,硬是靠远程把问题定位了。从那以后,我每块板子第一件事就是配好SSH。

3.4.4 net-tools——网络排查利器

ifconfig、netstat这些命令虽然老,但嵌入式环境里最可靠。装好之后,至少能确认IP地址:

ifconfig
# 看到ens33或eth0的inet地址,说明网络通了

3.5 开发环境知识体系

下面这张图帮你理清整个开发环境的层次关系:

嵌入式Linux开发环境知识体系 宿主机操作系统 方案A:虚拟机 (VirtualBox) 方案B:双系统 (独立分区) Ubuntu 22.04 LTS 系统 Git 版本控制 Vim 编辑器 SSH 远程连接 net-tools 网络 Qt 依赖库 (libgl1-mesa-dev, libfontconfig1-dev ...) 目标:Qt交叉编译 + 嵌入式Linux开发 💡 建议顺序 宿主机 → 系统 → 工具 → 依赖

3.6 验证环境是否就绪

装完工具后,跑一遍这个检查脚本,确保所有东西都到位:

#!/bin/bash
echo "=== 环境检查 ==="
echo "1. Git版本:$(git --version)"
echo "2. Vim版本:$(vim --version | head -1)"
echo "3. SSH状态:$(sudo systemctl is-active sshd)"
echo "4. 网络接口:$(ifconfig | grep -E '^[a-z]' | awk '{print $1}')"
echo "5. 磁盘空间:$(df -h / | tail -1 | awk '{print $4}')"
echo "=== 检查完毕 ==="

如果所有命令都能正常输出,恭喜你,开发环境的基础已经打好了。接下来就可以进入正题——配置交叉编译工具链了。

我的经验:环境搭建这一步,宁可多花半小时验证,也不要急着往下走。我见过太多人编译到一半发现缺依赖,回头再装,反而更浪费时间。