很多学习Linux驱动或ARM汇编的同学,常常在第一步——环境搭建上就遇到了困难。一个完整的嵌入式开发环境通常需要三部分:虚拟机软件、Linux操作系统以及交叉编译工具链。本文将手把手教你如何在Windows系统上,逐步搭建起这套用于Linux驱动和ARM学习的环境。
0. 环境组件说明
在开始动手之前,我们先明确需要安装的三大组件及其作用:
- VMware Workstation:一款功能强大的虚拟机软件。我们将在它内部安装和运行Linux系统,实现Windows与Linux的并存与隔离。
- Ubuntu 16.04/20.04 LTS:一个流行的Linux发行版。我们绝大多数的编译、开发和测试工作都将在这个系统内完成。
- 交叉编译工具链 (arm-none-linux-gnueabi-gcc):用于编译生成能在ARM架构开发板上运行的代码。这是连接x86主机与ARM目标板的关键桥梁。
1. 安装 VMware Workstation
首先,我们需要安装虚拟机平台。
-
下载安装程序:访问VMware官网下载Windows版本的VMware Workstation安装包。
-
运行安装向导:双击下载好的 VMware-workstation-full.exe 文件启动安装程序。

-
接受许可协议:在出现的许可协议窗口中,勾选“我接受许可协议中的条款”,然后点击“下一步”。

-
选择安装位置:你可以使用默认安装路径,或点击“更改...”按钮选择其他目录,然后点击“下一步”。

-
用户体验设置:根据个人喜好,可以选择是否勾选“启动时检查产品更新”和“加入VMware客户体验提升计划”,然后点击“下一步”。

-
创建快捷方式:确保“桌面”和“开始菜单程序文件夹”两个选项已勾选,以便后续快速启动,点击“下一步”。

-
开始安装:点击“下一步”后,安装程序将开始复制文件。此过程会安装必要的虚拟网络驱动等组件。

-
完成安装:安装完成后,点击“完成”按钮退出向导。首次启动时,软件会提示输入许可证密钥,你可以选择“我希望试用 VMware Workstation 15 30 天”以体验完整功能。


安装完成后,你将在桌面看到VMware的快捷方式。
2. 在VMware中安装Ubuntu
虚拟机平台就绪后,我们开始安装Linux操作系统。
-
下载Ubuntu镜像:从Ubuntu官方或其镜像站(如阿里云镜像)下载所需的ISO文件,例如 ubuntu-20.04.2.0-desktop-amd64.iso。
-
创建新虚拟机:打开VMware Workstation,点击“创建新的虚拟机”。

-
选择配置类型:在新建虚拟机向导中,选择“典型(推荐)”配置,点击“下一步”。

-
选择安装来源:选择“安装程序光盘映像文件(iso)”,并通过“浏览”按钮找到你下载的Ubuntu ISO文件,系统会自动检测到版本,点击“下一步”。

-
填写简易安装信息:设置你的全名、用户名和密码。为了后续操作方便,可以将密码设为简单的“1”(仅用于学习环境)。点击“下一步”。

-
命名虚拟机并选择位置:为虚拟机起一个名字,并指定其文件在主机磁盘上的存储位置。建议选择一个剩余空间较大的磁盘分区。

-
指定磁盘容量:设置虚拟机的最大磁盘大小。对于开发环境,建议设置大一些,例如100GB或以上。选择“将虚拟磁盘拆分成多个文件”便于管理,点击“下一步”。

-
完成创建:在确认配置页面,可以点击“自定义硬件”调整内存(建议至少2GB)、处理器核心数等。最后点击“完成”。

-
自动安装:VMware会启动虚拟机并自动开始安装Ubuntu。为了加速安装过程,建议在安装前断开宿主机的网络连接。

-
登录系统:安装完成后,虚拟机会自动重启。在登录界面输入你之前设置的密码(例如“1”),即可进入Ubuntu桌面环境。

为了更方便地在主机和虚拟机之间复制粘贴文件、共享剪贴板,我们需要安装VMware Tools的开源替代品 open-vm-tools-desktop。
- 在Ubuntu桌面,按下
Ctrl+Alt+T 组合键打开终端。
- 依次执行以下命令:
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop
- 执行命令时会提示输入当前用户密码(即你之前设置的密码,如“1”),输入后回车继续安装。
安装完成后,建议重启虚拟机。之后你就可以自由地从Windows窗口拖动文件到Ubuntu桌面,或直接复制粘贴文本了。
4. 安装与配置交叉编译工具链
这是搭建ARM开发环境的核心步骤。我们将安装一个特定的ARM GCC编译器。
-
准备目录:首先,在用户主目录下创建一个专用文件夹并赋予权限。
mkdir ~/toolchain
chmod 777 ~/toolchain

-
放入工具链:将准备好的交叉编译工具链压缩包(例如 gcc-4.6.4.tar.xz)通过拖拽或复制的方式,放入刚创建的 ~/toolchain 目录中。

-
解压工具链:打开终端,进入该目录并解压。
cd ~/toolchain
tar xvf gcc-4.6.4.tar.xz
-
配置环境变量:编辑系统级的bash配置文件,将工具链的bin目录添加到 PATH 中。使用 sudo 和文本编辑器(如 vim 或 nano)打开 /etc/bash.bashrc 文件,在文件末尾添加:
export PATH=$PATH:/home/你的用户名/toolchain/gcc-4.6.4/bin
请将“你的用户名”替换为你实际的用户名(例如“peng”)。
-
使配置生效:保存文件后,在终端执行以下命令使环境变量立即生效,或直接重新打开一个终端。
source /etc/bash.bashrc
-
安装依赖库:有些工具链需要额外的系统库支持,安装一个基础包通常能解决多数问题。
sudo apt-get install lsb-core
-
验证安装:最后,也是最关键的一步,验证交叉编译器是否可用。
arm-none-linux-gnueabi-gcc -v
如果终端打印出类似以下的编译器版本和配置信息,则说明交叉编译环境已成功搭建!
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/peng/toolchain/gcc-4.6.4/bin/../libexec/gcc/arm-arm1176jzfssf-linux-gnueabi/4.6.4/lto-wrapper
Target: arm-arm1176jzfssf-linux-gnueabi
Configured with: /work/builddir/src/gcc-4.6.4/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-arm1176jzfssf-linux-gnueabi --prefix=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4 --with-sysroot=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot --enable-languages=c,c++ --with-arch=armv6zk --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=softfp --with-pkgversion='crosstool-NG hg+default-2685dfa9de14 - tc0002' --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --with-gmp=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools --with-mpfr=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools --with-mpc=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools --with-ppl=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools --with-cloog=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools --with-libelf=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --without-long-double-128 --disable-nls --disable-multilib --with-local-prefix=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.6.4 (crosstool-NG hg+default-2685dfa9de14 - tc0002)
至此,一个完整的Linux驱动及ARM汇编学习环境已经搭建完毕。你现在可以在Ubuntu中编写代码,并使用 arm-none-linux-gnueabi-gcc 编译出运行在ARM板上的程序了。工欲善其事,必先利其器,接下来就可以专注于内核模块、设备驱动或ARM汇编指令的学习与实践了。
如果你在搭建过程中遇到其他问题,或者想与更多开发者交流嵌入式开发经验,欢迎到 云栈社区 的相关板块提问和分享。
|