欢迎光临
我们一直在努力

ARM 嵌入式 Linux 开发环境搭建全攻略:Ubuntu + Cygwin + ADS 从零到实战

摘要:本文手把手带你从零搭建一套可落地的 ARM 嵌入式开发环境。内容覆盖 Ubuntu 系统部署与 APT 包管理、GNU 交叉编译工具链安装与验证、Windows 下 Cygwin 辅助环境构建、VS Code 远程连接,以及 ARM ADS 集成环境的配置与首个工程调试。针对「命令未找到」「权限不足」「库文件缺失」三类高频报错,逐一给出具体示例、排查思路与验证命令,助你快速打通从系统安装到工程调试的全流程。

目录

  • ① 独立 Linux 系统安装与基础配置
  • ② Ubuntu 软件包管理与服务设置
  • ③ 核心开发工具链与文档部署
  • ④ Windows 下 Cygwin 环境构建指南
  • ⑤ Linux Shell 常用命令与文本编辑
  • ⑥ 文件搜索与串口通信工具实战
  • ⑦ Windows 代码管理与远程连接方案
  • ⑧ ARM ADS 集成环境配置详解
  • ⑨ 创建首个工程与调试环境验证
  • ⑩ 环境搭建常见报错与排查思路
  • ⑩.5 全流程回顾与避坑要点
  • ⑪ 总结与参考资料

无论你是嵌入式 Linux 新手还是想打通 Windows 与 Linux 混合开发流程的工程师,都能按步骤快速落地一套稳定可用的开发平台。

很多嵌入式开发者在刚接触 ARM 架构时,往往会被环境搭建这道“门槛”劝退。无论是面对陌生的 Linux 命令,还是在 Windows 下配置交叉编译工具链时的种种报错,都容易让人产生挫败感。实际上,一个稳定、高效的开发环境是后续所有工作的基石,它直接决定了代码编写的流畅度和调试的效率。如果你正打算从零开始构建一套完整的 ARM 开发体系,或者想在现有的 Windows 办公环境中融入 Linux 的开发能力,那么接下来的内容将非常值得你关注。我们将跳过那些晦涩的理论堆砌,直接通过实操步骤,带你打通从系统安装到工程调试的全流程,让环境配置不再是拦路虎,而是你技术进阶的助推器。

对于大多数习惯使用 Windows 的工程师来说,完全切换到 Linux 桌面可能需要一个适应过程,但掌握基础的 Linux 操作又是嵌入式开发的必修课。因此,我们采取一种务实的策略:在需要高性能编译和原生支持时使用独立 Linux 系统,而在日常文档处理和轻量级开发时利用 Windows 下的兼容环境。这种混合模式既能保证开发效率,又能兼顾操作习惯。本文将重点讲解如何部署 Ubuntu 系统、配置核心工具链、搭建 Cygwin 辅助环境,以及最终如何在 ADS(ARM Developer Suite)中完成第一个工程的编译与调试。无论你是学生还是职场新人,只要跟随这些步骤,都能快速建立起属于自己的可靠开发平台。

① 独立 Linux 系统安装与基础配置

构建嵌入式开发环境的第一步,通常是拥有一台运行稳定的 Linux 主机。虽然虚拟机是一个不错的选择,但对于涉及到底层驱动调试或高频编译的场景,独立安装的 Linux 系统能提供更优的性能表现。目前,Ubuntu LTS(长期支持版)因其丰富的社区资源和良好的硬件兼容性,成为了大多数开发者的首选。

硬件要求:建议至少配备 4GB 内存(编译大型工程时 8GB 更佳)、双核及以上 CPU,以及 40GB 以上的可用磁盘空间。若使用较老的电脑,可选择 Ubuntu 的轻量桌面(如 XFCE)以降低资源占用。

安装方式选择:推荐使用 U 盘启动盘安装。在 Windows 下可用 Rufus 或 balenaEtcher 将官方 ISO 镜像写入 U 盘;在 Linux 下可用 dd 命令写入。制作完成后,进入 BIOS 设置 U 盘为第一启动项,重启即可进入安装界面。

安装流程要点:

  • 选择「安装 Ubuntu」而非「试用」,语言建议选 English 以避免部分工具链对中文路径的兼容问题。
  • 分区时,除了根目录 / 外,最好单独划分一个 /home 分区,这样即使未来重装系统,个人配置和代码数据也能得以保留。若不确定,可直接选择「使用整个磁盘并安装 Ubuntu」,系统会自动完成分区。
  • 在安装阶段就勾选\”SSH Server\”选项,或者在系统启动后通过 sudo apt install openssh-server 进行安装。
  • 安装完成后,首要是更新软件源列表,确保能下载到最新的安全补丁和软件包。你可以打开终端,执行 sudo apt update && sudo apt upgrade 来完成这一操作。记得检查防火墙设置,确保 22 端口处于开放状态,以便 Windows 主机能够通过 SSH 客户端无缝连接。

    验证安装:执行 uname -a 查看内核版本,lsb_release -a 确认 Ubuntu 版本号,df -h 检查磁盘分区是否正常挂载。若以上命令均能正常输出,说明系统安装成功,可以进入下一步工具链配置。

    推荐分区方案:对于嵌入式开发场景,建议采用如下分区布局,兼顾系统稳定性与数据安全:

    挂载点
    建议大小
    文件系统
    说明
    /(根分区) 20–30GB ext4 存放系统与软件包,建议预留足够空间给工具链
    /home 剩余空间 ext4 存放代码、工程与个人配置,重装系统时数据不丢失
    swap 与内存相当或 4GB swap 内存不足时的交换空间,编译大型工程时很有帮助

    安装后的基础配置清单:系统装好后,建议按以下顺序完成基础配置,为后续开发铺平道路:

  • 更新软件源:sudo apt update && sudo apt upgrade,确保系统处于最新状态。
  • 安装基础工具:sudo apt install build-essential curl wget git vim net-tools,一次性补齐编译与网络调试常用工具。
  • 配置 SSH 服务:sudo systemctl enable ssh && sudo systemctl start ssh,并确认 22 端口已开放,方便 Windows 主机远程连接。
  • 设置时区与语言:sudo timedatectl set-timezone Asia/Shanghai,避免编译日志时间错乱。
  • 创建开发用户:建议使用普通用户而非 root 进行日常开发,必要时用 sudo 提权,降低误操作风险。
  • 常见安装问题速查:安装过程中若遇到以下情况,可快速定位解决:

    • U 盘无法引导:检查 BIOS 是否开启 UEFI 启动,并确认 U 盘写入方式为「DD 模式」而非「ISO 模式」。
    • 安装界面卡死:多为显卡驱动兼容问题,可在启动时选择「Safe Graphics」模式进入安装界面。
    • 分区失败:若磁盘已有旧系统,先删除旧分区或用 gparted 工具重新规划,再执行安装。

    ② Ubuntu 软件包管理与服务设置

    Ubuntu 的强大之处在于其完善的包管理系统 APT(Advanced Package Tool)。在日常开发中,我们很少需要从网页下载安装包手动解压,而是直接通过命令行获取经过验证的软件。除了基础的更新操作,学会搜索和安装特定版本的开发库至关重要。例如,若需要安装串口通信工具 minicom,只需输入 sudo apt install minicom 即可自动解决依赖关系并完成安装。

    APT 常用命令速查:掌握下面这组命令,就能覆盖绝大多数软件管理场景:

    操作
    命令
    说明
    更新软件源列表 sudo apt update 同步远程仓库索引,安装前建议先执行
    升级已装软件 sudo apt upgrade 升级所有可升级的软件包
    搜索软件包 apt search 关键词 按名称或描述搜索可用软件
    查看包信息 apt show 包名 显示版本、依赖、大小等详细信息
    安装软件包 sudo apt install 包名 自动解决依赖并安装
    卸载软件包 sudo apt remove 包名 移除软件但保留配置文件
    彻底清除 sudo apt purge 包名 连配置文件一并删除
    清理无用依赖 sudo apt autoremove 移除不再需要的依赖包
    清理缓存 sudo apt clean 清理下载的 .deb 缓存释放磁盘空间

    配置软件源(换国内镜像):默认源在国外,下载速度可能较慢。建议将 /etc/apt/sources.list 中的源替换为国内镜像(如清华、阿里云)。以清华源为例,先备份原文件,再替换:

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

    # 用 sed 将 archive.ubuntu.com 替换为清华镜像
    sudo sed -i \’s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g\’ /etc/apt/sources.list

    # 更新索引使配置生效
    sudo apt update

    安装指定版本:某些开发场景需要固定工具链版本。先用 apt-cache policy 包名 查看可用版本列表,再指定版本号安装:

    # 查看 gcc 的可用版本
    apt-cache policy gcc

    # 安装指定版本(以 gcc-9 为例)
    sudo apt install gcc-9

    除了软件安装,系统服务的管理也是日常维护的重点。Systemd 是 Ubuntu 默认的初始化系统,用于管理后台服务。假设你需要让某个自定义脚本在开机时自动运行,可以将其编写为 service 文件放入 /etc/systemd/system/ 目录下,然后使用 systemctl enable 和 systemctl start 命令来激活它。对于开发者而言,理解如何查看服务状态(systemctl status)和日志(journalctl -u 服务名)能有效帮助排查环境问题。比如,当发现网络服务异常时,通过这些命令可以快速定位是配置错误还是端口冲突,从而避免盲目重启系统。

    Systemd 服务管理速查:下面列出日常最常用的服务管理命令:

    操作
    命令
    说明
    启动服务 sudo systemctl start 服务名 立即启动,不设开机自启
    停止服务 sudo systemctl stop 服务名 立即停止
    重启服务 sudo systemctl restart 服务名 常用于配置修改后生效
    设置开机自启 sudo systemctl enable 服务名 开机自动运行
    取消开机自启 sudo systemctl disable 服务名 取消自动运行
    查看服务状态 systemctl status 服务名 显示运行状态与最近日志
    查看服务日志 journalctl -u 服务名 查看该服务的完整日志

    自定义服务示例:假设你有一个启动开发板串口转发服务的脚本 /opt/start_serial.sh,希望开机自动运行,可创建如下 service 文件:

    [Unit]
    Description=Serial Port Forward Service
    After=network.target

    [Service]
    Type=simple
    ExecStart=/opt/start_serial.sh
    Restart=on-failure
    User=dev

    [Install]
    WantedBy=multi-user.target

    保存为 /etc/systemd/system/serial-forward.service 后,执行 sudo systemctl daemon-reload 重新加载配置,再 sudo systemctl enable –now serial-forward 即可立即启动并设置开机自启。

    常见问题排查:使用 APT 或 Systemd 时若遇到问题,可参考以下思路:

    • E: Unable to locate package:软件源索引未更新,先执行 sudo apt update;若仍找不到,可能是软件源未包含该包,需添加对应 PPA 或第三方源。
    • E: Could not get lock /var/lib/dpkg/lock:有另一个 apt 进程正在运行,等待其结束,或执行 sudo rm /var/lib/dpkg/lock 强制解锁(慎用)。
    • 服务启动失败:先用 systemctl status 服务名 查看错误信息,再用 journalctl -u 服务名 -n 50 查看最近 50 行日志定位原因。

    ③ 核心开发工具链与文档部署

    有了操作系统,接下来就是填充“弹药”,即安装核心的开发工具链。对于 ARM 开发,GNU 工具链(GCC, GDB, Make, Binutils)是必不可少的。在 Ubuntu 上,可以通过 sudo apt install gcc-arm-linux-gnueabihf gdb-multiarch make git 一键安装交叉编译环境。安装完成后,务必验证编译器版本,输入 arm-linux-gnueabihf-gcc –version 确认是否生效。

    GNU 工具链各组件作用:理解每个组件的职责,能帮你更从容地排查编译问题:

    组件
    命令
    作用
    交叉编译器 arm-linux-gnueabihf-gcc 将 C/C++ 源码编译为 ARM 架构的目标文件
    汇编器 arm-linux-gnueabihf-as 将汇编源码转换为机器码
    链接器 arm-linux-gnueabihf-ld 将多个目标文件与库链接为可执行文件
    调试器 gdb-multiarch 支持多架构的调试器,可连接开发板或模拟器
    构建工具 make 根据 Makefile 自动完成编译、链接流程
    二进制工具 arm-linux-gnueabihf-objdump 反汇编、查看二进制文件信息

    验证交叉编译环境:安装完成后,除了查看版本号,建议实际编译一个最小程序,确认工具链能真正产出 ARM 可执行文件:

    # 查看交叉编译器版本
    arm-linux-gnueabihf-gcc –version

    # 编写一个最小 C 程序
    echo \’int main(){return 0;}\’ > hello.c

    # 用交叉编译器编译
    arm-linux-gnueabihf-gcc hello.c -o hello

    # 用 file 确认生成的是 ARM 架构的可执行文件
    file hello

    若 file 输出中包含 ARM 或 ARM aarch64 字样,说明交叉编译环境已正确生效。注意,该程序无法在 x86 主机上直接运行,需通过 qemu-arm 模拟或部署到开发板验证。

    安装 32 位兼容库:部分老旧的 ARM 工具链或 ADS 组件依赖 32 位运行库。若执行时提示缺少 .so 文件,可安装兼容库:

    sudo dpkg –add-architecture i386
    sudo apt update
    sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386

    除了编译器,代码版本管理工具 Git 也是现代开发的标配。建议配置好全局的用户名和邮箱,并生成 SSH 密钥对,以便与代码托管平台安全通信。

    Git 基础配置:首次使用前,先设置全局身份信息,避免提交时提示缺少用户信息:

    # 设置全局用户名与邮箱
    git config –global user.name \”Your Name\”
    git config –global user.email \”you@example.com\”

    # 查看当前配置
    git config –list

    生成 SSH 密钥:用于与 GitHub、GitLab 等平台免密通信。执行以下命令,一路回车即可生成默认密钥:

    # 生成 ed25519 类型密钥(更安全、更简洁)
    ssh-keygen -t ed25519 -C \”you@example.com\”

    # 查看公钥内容,复制后添加到代码托管平台的 SSH Keys 中
    cat ~/.ssh/id_ed25519.pub

    生成后,可用 ssh -T git@github.com 测试连接是否成功(首次连接需输入 yes 确认指纹)。

    同时,不要忽视文档的重要性。许多开源项目的文档以 HTML 或 PDF 形式存在,可以在 Linux 下部署一个简单的 Web 服务器(如 Python 自带的 http.server 或 Nginx),将文档目录映射出来,方便在浏览器中随时查阅。这种本地化的文档中心不仅能加快检索速度,还能在没有外部网络的情况下正常工作,极大提升了开发体验。

    快速部署本地文档中心:若只是临时查阅,用 Python 自带服务器即可,无需安装额外软件:

    # 在文档目录下启动 HTTP 服务,监听 8000 端口
    cd ~/docs
    python3 -m http.server 8000

    # 浏览器访问
    # http://localhost:8000

    若需要长期稳定运行,建议使用 Nginx 并配合 Systemd 管理。先安装 Nginx,再将文档目录映射到站点根目录:

    sudo apt install nginx

    # 将文档目录软链接到 Nginx 默认站点目录
    sudo ln -s ~/docs /var/www/html/docs

    # 重启 Nginx 使配置生效
    sudo systemctl restart nginx

    之后即可通过 http://<主机IP>/docs 在局域网内随时访问文档。若需开机自启,Nginx 默认已配置为开机启动,无需额外设置。

    ④ Windows 下 Cygwin 环境构建指南

    并非所有工作都需要在 Linux 下完成。很多时候,我们希望在熟悉的 Windows 界面中使用类 Unix 的命令和工具。这时,Cygwin 就是一个极佳的桥梁。它提供了一个模拟层,让 Windows 能够运行大量的 Linux 工具和脚本。安装 Cygwin 时,关键在于选择合适的镜像源以加速下载,并在组件选择界面仔细勾选所需的包。

    安装 Cygwin 的完整步骤:从官网下载 setup-x86_64.exe(64 位系统)后,按以下流程操作:

  • 选择安装方式:双击安装包,选择「Install from Internet」,即从网络下载并安装。
  • 设置安装目录:建议安装到 C:\\cygwin64,路径中不要包含中文或空格,以免引发脚本执行错误。
  • 选择本地软件包目录:指定一个临时目录(如 C:\\cygwin_packages)用于缓存下载的 .tar.xz 包,方便日后离线重装。
  • 选择镜像源:在「Choose Download Site」界面,建议勾选国内镜像(如清华 TUNA、阿里云)以显著加快下载速度;若列表中没有,可手动添加镜像地址。
  • 选择组件:进入「Select Packages」界面后,在搜索框输入包名,逐个勾选所需组件(见下方清单),点击「Next」开始下载安装。
  • 推荐安装组件清单:对于嵌入式开发者,建议至少安装以下基础组件:

    组件
    用途
    说明
    gcc-core C 编译器 编译 C 源码,对应 Linux 的 gcc
    gcc-g++ C++ 编译器 编译 C++ 源码,对应 Linux 的 g++
    make 构建工具 根据 Makefile 自动完成编译、链接
    git 版本管理 在 Windows 下使用 Git 命令
    openssh 远程连接 提供 ssh、scp 等命令
    vim 文本编辑 在 Cygwin 终端中使用 Vim
    binutils 二进制工具 提供 objdump、nm 等工具
    gdb 调试器 命令行调试程序
    赞(0)
    未经允许不得转载:171主机测评 » ARM 嵌入式 Linux 开发环境搭建全攻略:Ubuntu + Cygwin + ADS 从零到实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址