3、开发环境搭建(上):Linux虚拟机安装、Ubuntu系统配置、基础开发工具安装
说实话,做嵌入式开发这么多年,我见过太多人在环境搭建这一步就卡住了。尤其是刚接触NuttX的朋友,一上来就被各种工具链、依赖库搞得晕头转向。别急,咱们一步步来。
这一章,我带你搞定三件事:装虚拟机、配Ubuntu、装工具。这三板斧抡好了,后面的编译工作才能顺风顺水。
3.1 为什么非要用Linux?
你可能想问:我Windows用得好好的,为啥非得折腾Linux?
嗯,这个问题我当年也问过。后来发现,NuttX的构建系统、Kconfig配置、GCC交叉编译链,这些东西在Windows上跑起来简直是一场噩梦。说白了,Linux才是嵌入式开发的「原生土壤」。
我个人习惯用Ubuntu 20.04 LTS,稳定、社区活跃、遇到问题随便一搜就有答案。你如果喜欢新版,22.04也行,但别用太激进的版本,比如非LTS的中间版本——我在项目里吃过亏,升级后某些库不兼容,折腾了两天才回滚。
3.2 虚拟机安装:VMware还是VirtualBox?
这两个我都用过。VMware功能强,但收费;VirtualBox免费,够用。对于咱们的学习场景,VirtualBox完全够用。
下载地址我就不贴了,你搜一下「VirtualBox 官网」就行。安装过程一路Next,没什么好说的。唯一要注意的是:安装完成后,记得去设置里开启VT-x/AMD-V虚拟化。否则虚拟机跑起来会卡得像幻灯片。
3.3 Ubuntu系统配置:从零开始
虚拟机装好后,创建新虚拟机,选择Ubuntu 20.04的ISO镜像。分配资源时,我建议:
- 内存:至少4GB,推荐8GB
- CPU:2核起步,4核更佳
- 硬盘:40GB以上,建议60GB(后面要装很多工具链)
安装过程很简单,选中文、设用户名密码、等进度条走完就行。装好后第一件事:换软件源。
为什么?因为默认的国外源慢得让人抓狂。换成阿里云或清华的源,速度能快10倍。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源列表
sudo vim /etc/apt/sources.list
# 把里面的内容全部替换为阿里云源(具体内容去阿里云镜像站复制)
# 然后更新
sudo apt update
sudo apt upgrade -y
更新完系统,重启一下。嗯,这一步别省,我见过有人不重启直接装工具,结果依赖冲突。
3.4 基础开发工具安装:Git、Make、GCC
系统准备好了,接下来装三件套:Git、Make、GCC。这三个是嵌入式开发的「铁三角」。
3.4.1 Git:版本控制
Git的重要性不用我多说。NuttX的源码就在GitHub上,你得用Git把它拉下来。
sudo apt install git -y
# 配置基本信息(不配也能用,但建议配)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
配好之后,可以试试拉取NuttX源码(这一步比较耗时,建议先跳过,后面章节会专门讲):
git clone https://github.com/apache/nuttx.git
3.4.2 Make:构建工具
Make是Linux下最经典的构建工具。NuttX的构建系统虽然用了Kconfig和CMake,但底层还是离不开Make。
sudo apt install make -y
# 验证安装
make --version
看到版本号输出,就说明装好了。如果你用的是Ubuntu 20.04,默认装的是GNU Make 4.2.1,够用。
3.4.3 GCC:编译器
这里要注意:我们装的是ARM交叉编译链,不是本地GCC。因为我们要在x86的电脑上编译出ARM架构的代码。
# 安装ARM交叉编译链
sudo apt install gcc-arm-none-eabi -y
# 验证安装
arm-none-eabi-gcc --version
装好后,你会看到类似这样的输出:
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 9-2020-q2-update) 9.3.1 20200408 (release)
Copyright (C) 2019 Free Software Foundation, Inc.
版本号9.3.1,够用。如果你需要更新的版本,可以去ARM官网下载,但apt安装的版本经过测试,稳定性有保障。
3.5 知识体系总览
这一章的内容,说白了就是搭建一个「能编译NuttX」的环境。下面这张图帮你理清脉络:
3.6 验证环境是否就绪
装完上面这些,咱们做个快速验证。写个简单的C程序,用交叉编译链编译一下:
# 创建一个测试文件
echo '#include <stdio.h>
int main() {
printf("Hello NuttX!\n");
return 0;
}' > test.c
# 用ARM交叉编译链编译
arm-none-eabi-gcc -c test.c -o test.o
# 查看生成的目标文件
file test.o
如果输出显示 ELF 32-bit LSB relocatable, ARM,恭喜你,环境搭建成功!
- VirtualBox虚拟机安装与配置
- Ubuntu 20.04系统安装与源更换
- Git、Make、ARM GCC交叉编译链安装
下一步,我们就可以正式开始NuttX的源码拉取和编译了。