第1章:Linux宿主机环境准备

做嵌入式开发,说白了就是跟硬件和底层代码打交道。而NuttX这个实时操作系统,它的开发环境几乎都跑在Linux上。我个人习惯用Ubuntu,因为它生态好、社区活跃,遇到问题随便一搜就有答案。

这一章,我们就来把Linux宿主机环境搭好。别小看这一步,环境没配好,后面编译、调试全是坑。我曾经就因为源没配好,下载一个包等了半小时,结果还失败了……嗯,从那以后我学乖了。

1.1 安装Ubuntu(或使用WSL2)

你有两个选择:

  • 物理机/虚拟机安装Ubuntu:推荐20.04 LTS或22.04 LTS版本。如果你电脑性能还行,直接装双系统最稳。
  • Windows下用WSL2:如果你主力机是Windows,又不想折腾虚拟机,WSL2是个好选择。它比虚拟机轻量,而且和Windows文件系统互通。

我个人更推荐WSL2。为什么?因为方便。你可以在Windows里写代码,在WSL2里编译,两边不耽误。我项目里经常这样干——Windows上开VS Code,WSL2里跑make,丝滑得很。

小提示:WSL2安装后,记得在Windows Terminal里把默认发行版设为Ubuntu。这样每次打开终端就直接进Linux环境了。

1.2 配置国内软件源

Ubuntu默认的软件源在国外,下载速度你懂的……所以第一步,换成国内源。我用的是清华源,稳定且快。

操作很简单:

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

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

把里面的内容替换成以下(以Ubuntu 22.04为例):

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

然后更新:

sudo apt update
sudo apt upgrade -y
注意:如果你用的是Ubuntu 20.04,把上面的 jammy 换成 focal。别搞错了,否则会报依赖错误。

配置完源之后,你会发现apt下载速度从几十KB/s飙到几MB/s。我第一次换源时,那种感觉就像从绿皮火车换成了高铁。

1.3 安装基础开发工具

接下来安装编译NuttX必需的工具。这些工具缺一不可,少一个编译就卡住。我列个清单:

工具 用途 安装命令
git 版本控制,拉取NuttX源码 sudo apt install git
make 构建系统,执行编译 sudo apt install make
gcc / g++ C/C++编译器 sudo apt install gcc g++
python3 / pip3 脚本支持,部分工具依赖 sudo apt install python3 python3-pip
cmake 跨平台构建工具 sudo apt install cmake
ninja 高速构建系统,比make快 sudo apt install ninja-build

你可以一次性装完:

sudo apt install -y git make gcc g++ python3 python3-pip cmake ninja-build

装完之后,验证一下:

git --version
make --version
gcc --version
python3 --version
cmake --version
ninja --version

每个命令都应该正常输出版本号。如果哪个没出来,说明没装成功,重新装一下就行。

重点:ninja这个工具很多人会忽略。但NuttX的构建系统默认用ninja,比make快不少。我刚开始用make编译NuttX,一次要等两三分钟。换成ninja后,十几秒就搞定。你想想看,省下来的时间干点啥不好?

1.4 知识体系一览

这一章的内容其实就三个核心点:操作系统、软件源、开发工具。它们之间的关系我画了张图:

第1章 知识体系结构 Linux宿主机环境 操作系统选择 Ubuntu 20.04/22.04 WSL2(推荐) 软件源配置 清华源 / 阿里源 apt update & upgrade 基础开发工具 git / make / gcc python3 / cmake / ninja 目标:能正常编译NuttX的最小环境

这张图把本章的核心逻辑串起来了。你照着这个顺序走,不会乱。

1.5 避坑指南

最后分享几个我踩过的坑:

  • WSL2网络问题:有时候WSL2里apt会连不上。解决办法是重启WSL2服务,或者在Windows防火墙里放行。
  • gcc版本太老:Ubuntu 20.04自带的gcc是9.x,编译某些新版本NuttX可能报错。建议升级到gcc-11以上。
  • ninja没装全:有些发行版ninja的包名叫ninja-build,不是ninja。装错了会提示找不到命令。

嗯,环境准备就这些。别嫌啰嗦,这一步做好了,后面编译NuttX就是一路绿灯。


公众号:蓝海资料掘金营,微信deep3321