ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Windows 开发环境全景

Windows 开发环境全景 Windows 开发环境全景六件工具全家福Windows ARM 开发环境全景本课目标六件工具全家福六个工具的协作关系——一张图看懂全链路本页大纲六件工具全景 六件工具的分工哲学——每个工具只干一件事 安装前必读的三个认知——少踩 90% 的坑 从源码到芯片的完整流水线——环境搭建后的标准工作流 学习路径对照——每节课在这个流水线的哪个环节 本课毕业标准——看完这页你该带走什么MSYS2 UCRT64MSYS2 UCRT64 — Windows 上的类 Unix 环境MSYS2 的三大子系统——你只需要 UCRT64pacman — 类 Arch Linux 的包管理器国内镜像加速——最重要的第一件事本页大纲MSYS2 UCRT64 深度 MSYS2 是什么——很多人最大的误解 UCRT64 vs MINGW64 vs MSYS——三种环境怎么选⚠️ MSYS2 常见问题速排 MSYS2 的目录结构——装完要知道东西都在哪️ 打开 MSYS2 UCRT64 终端的两种方式 pacman 包命名规则——看懂包名才能装对包PATH环境变量PATH 环境变量——为什么它是一切的关键PATH 搜索机制——arm-none-eabi-gcc 是怎么被找到的LKS32 项目中 PATH 的三处关键配置本页大纲PATH 环境变量 PATH 的本质——当你说 gccWindows 去哪找 检查 PATH——两行命令确认一切正常️ PATH 的三层配置场景——你会在三个地方见到它⚙️ PATH 配置实操——三种改法任选 PATH 常见误区——这三句话千万别信工具链组件详解arm-none-eabi-gcc — 一套工具链八个子工具arm-none-eabi-gcc 工具链中的核心子工具名字拆解arm-none-eabi 的含义CMake Ninja — 构建生成器 并行编译引擎本页大纲工具链组件详解 arm-none-eabi-* 家族——一次安装八个命令 CMake 与 Ninja 的分工——大脑与手脚✅ 工具链验证清单——装完立刻自查 GDB 与 J-Link 的协作——软件与硬件的握手 工具链验证的黄金五分钟——新机器 5 分钟确认环境可用 快速自检——你能回答这 5 个问题吗安装后验证与排错安装后验证——确保一切正常四步验证清单终极测试编译 LKS32 项目常见环境问题速查本页大纲验证与排错 环境就绪验证——一条命令走完全流程 四大常见错误速查表——遇到直接查 环境快照——把配置存档随时恢复 环境搭建 FAQ——十分钟速查 环境就绪后的第一个里程碑——Hello 流水线六件工具全家福Windows ARM 开发环境全景要在 Windows 上搭建 LKS32 CMake 开发环境你需要六件工具协同工作。每个工具职责明确——装好之后几乎不需要再管。本课目标理解MSYS2 UCRT64是什么为什么它是 Windows 嵌入式开发的基石搞清楚六个工具的各自职责和协作关系掌握PATH 环境变量为什么对交叉编译至关重要六件工具全家福工具角色版本安装方式关键路径MSYS2 UCRT64终端 包管理器最新msys2.org 下载安装C:\msys64arm-none-eabi-gccARM 交叉编译16.1.0pacman -SC:\msys64\ucrt64\binCMake构建系统生成器4.4.0pacman -SC:\msys64\ucrt64\binNinja并行编译引擎1.13.2pacman -SC:\msys64\ucrt64\bingdb-multiarchARM 调试器17.2pacman -SC:\msys64\ucrt64\binJ-Link调试器驱动 烧录7.68segger.com 下载C:\Program Files\SEGGER\JLink六个工具的协作关系——一张图看懂全链路本页大纲六件工具全景① 六件工具的职责分工 → ② 全链路协作关系 → ③ 工具选择逻辑为什么是这套组合→ ④ 交互点选工具查看职责 → ⑤ 安装前必读的三个认知 六件工具的分工哲学——每个工具只干一件事这套工具链的设计哲学单一职责 管道协作。每个工具做好一件事通过文件/命令连接起来——这正是 Unix 哲学在嵌入式构建的体现。 安装前必读的三个认知——少踩 90% 的坑#认知说明1版本要配套CMake ≥ 3.20CMakePresets 需要、GCC 16.1ARM GCC 新版本语法、Ninja 1.13——三个版本互相兼容才不报错2PATH 是命脉VSCode 里的终端、CMake Tools 的构建、GDB 的调试——全部依赖 PATH 能找到工具本页 Tab 3 专门讲3MSYS2 是根四个命令行工具都装在 MSYS2 里——以后装工具永远是pacman -S 包名不用再去官网下载 为什么这六个工具是标准答案这是嵌入式开源社区经过 10 年收敛出的组合MSYS2Windows 上的 Linux 体验→ pacman装包→ GCC编译→ CMake管理→ Ninja加速→ GDB/J-Link调试——每一个环节都是开源社区验证过的最优解。 一句话总览这套环境不是六个孤立的软件而是一条从源码到芯片的流水线装MSYS2→ 编GCC→ 管CMakeNinja→ 调GDBJ-Link。理解这条流水线后面的所有课都在往里面加细节。 从源码到芯片的完整流水线——环境搭建后的标准工作流 学习路径对照——每节课在这个流水线的哪个环节流水线环节工具对应课程你将学会装MSYS2 pacman第 05-08 课镜像加速、环境快照编arm-none-eabi-gcc第 06、23-24 课编译参数、优化、警告管CMake Ninja第 09-18、33-35 课语法、target、Presets调GDB J-Link第 41-46 课断点、HardFault 定位烧J-Link Commander第 46-47 课脚本烧录、一键任务 环境阶段记忆锚点以后看到任何环境搭建教程先找三样东西① 用什么包管理器pacman/apt/brew→ ② 工具装到哪个目录ucrt64/bin→ ③ PATH 怎么配三入口叠加——抓住这三点任何平台的任何环境都是同一个套路。 本课毕业标准——看完这页你该带走什么能力验收方式讲清六工具职责能对同事说出MSYS2 装、GCC 编、CMakeNinja 管、GDBJ-Link 调理解 MSYS2 本质能解释MSYS2 不是虚拟机是原生工具集搞定 PATH能在 5 分钟内检查并修复命令找不到认识工具链家族能说出 gcc/objcopy/size/objdump 各自用途MSYS2 UCRT64MSYS2 UCRT64 — Windows 上的类 Unix 环境MSYS2 是为 Windows 提供 Unix 兼容层的软件分发平台。核心价值让你在 Windows 上用pacman类 Arch Linux 包管理器安装 GCC/CMake/Ninja/GDB——全部开源免费。MSYS2 的三大子系统——你只需要 UCRT64终端C 运行时适合谁UCRT64Universal C RuntimeWindows 10 原生嵌入式 ARM 开发——我们选的MINGW64msvcrt旧版 Windows C 库传统 MinGW-w64 用户CLANG64LLVM libc UCRT想用 Clang 而非 GCC 为什么选 UCRT64UCRT 是 Windows 10 的官方 C 运行时。比 MSVCRT 更标准、更兼容 POSIX。arm-none-eabi-gcc 和 CMake 都在 UCRT64 仓库中——直接 pacman 安装即可。pacman — 类 Arch Linux 的包管理器安装 MSYS2 后打开UCRT64 终端不是 MSYS2 终端不是 MINGW64 终端——紫色背景、黄色文字的命令行国内镜像加速——最重要的第一件事MSYS2 默认软件源在国外——国内可能10 KB/s。编辑两个文件把清华源排在最前面文件路径在文件最前面添加C:\msys64\etc\pacman.d\mirrorlist.mingwServer https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/$repo/C:\msys64\etc\pacman.d\mirrorlist.msysServer https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/其他可用镜像mirrors.ustc.edu.cn中科大。改完后运行pacman -Syu刷新。 效果下载速度 10 KB/s - 10-50 MB/s。安装 2 GB 的工具链从几小时变成几十秒。本页大纲MSYS2 UCRT64 深度① MSYS2 是什么不是模拟器→ ② UCRT64 vs MINGW64 vs MSYS 三种环境 → ③ pacman 包管理器速查 → ④ 交互pacman 常用命令演练 → ⑤ MSYS2 常见问题 MSYS2 是什么——很多人最大的误解**MSYS2 不是虚拟机、不是 WSL、不是模拟器。**它是一个为 Windows 提供类 Unix 开发环境的工具集包含一个终端mintty、一个包管理器pacman、以及编译好的 Windows 原生程序。你装的所有工具GCC/CMake/Ninja都是 Windows 原生二进制——不是 Linux 程序在模拟器里跑。 UCRT64 vs MINGW64 vs MSYS——三种环境怎么选MSYS2 提供多套独立环境它们的区别在于C 运行时CRT不同。本教程用 UCRT64 是因为它是最新、最兼容的选择。环境C 运行时特点本教程选择UCRT64Universal CRT微软官方最新、Win10 完美、与 Visual Studio 兼容✅ 首选MINGW64MSVCRT老版本兼容 Win7/8、生态最老旧项目用MSYSMSYS2 自研用于构建 MSYS2 自身一般不用CLANG64Universal CRTClang 编译器生态特殊需求 关键路径UCRT64 环境的所有工具都在 C:\msys64\ucrt64\bin ——这正是第 06 课安装后要加入 PATH 的目录。后面所有工具都会装进这个 bin。⚠️ MSYS2 常见问题速排问题原因解决pacman 下载极慢默认走国外镜像第 08 课切换清华/中科大镜像包安装冲突环境混用MINGW64 的包装进 UCRT64全程只用 UCRT64 终端命令找不到PATH 没加 ucr64/bin本页 Tab 3 详解 PATH中文乱码终端编码问题mintty 选项 → 设置 UTF-8 本页小结MSYS2 是 Windows 嵌入式开发的基建——理解了它的本质原生工具集而非虚拟机 三种环境差异选 UCRT64 pacman 用法你就拥有了一个永不掉线的工具补给站。 MSYS2 的目录结构——装完要知道东西都在哪C:\msys64\ ├── ucrt64\ ← 主环境重点 │ ├── bin\ ← 所有工具gcc/cmake/ninja/gdb 都在这里 │ ├── include\ ← C/C 头文件 │ └── lib\ ← 静态库/动态库 ├── usr\ ← Unix 工具bash/sed/grep 等 │ └── bin\ ├── etc\pacman.conf ← 包管理器配置镜像源在这改 ├── var\cache\pacman ← 已下载的包缓存 └── msys2.exe ← 启动入口 重点记忆以后所有PATH 找不到工具的问题都先检查 C:\msys64\ucrt64\bin 在不在 PATH 里。这是 MSYS2 全家桶的大门口。️ 打开 MSYS2 UCRT64 终端的两种方式方式操作适用场景开始菜单开始菜单 → MSYS2 文件夹 → “MSYS2 UCRT64”日常安装工具VSCode 内VSCode 终端选择 “UCRT64” 配置文件开发时保持同一环境普通 cmd直接敲 gcc需 PATH 已配置临时用一下 建议开发统一用VSCode 里的 UCRT64 终端——这样 PATH、环境变量、工具版本全程一致避免终端能用、VSCode 不能用的经典问题。 pacman 包命名规则——看懂包名才能装对包mingw-w64-ucrt-x86_64-arm-none-eabi-gcc │ │ │ └──────┬──────┘ │ │ │ └─ 包名工具名 │ │ └─ 架构x86_6464 位 │ └─ 环境ucrtUCRT64 专属 └─ 前缀mingw-w64MSYS2 的 Windows 包 记错包名怎么办三种补救① pacman -Ss 关键词搜索② 只输前半段看补全③ 复制教程里的完整包名。装错环境如装了 MINGW64 的包是最常见的坑——务必核对 ucrt 字样。PATH环境变量PATH 环境变量——为什么它是一切的关键当你敲下arm-none-eabi-gcc——*Windows 怎么知道去哪里找这个程序*答案在PATH 环境变量中它是一个分号分隔的目录列表Windows 按顺序搜索可执行文件。PATH 搜索机制——arm-none-eabi-gcc 是怎么被找到的LKS32 项目中 PATH 的三处关键配置位置配置内容作用UCRT64 终端启动时自动注入打开 UCRT64 终端时 PATH 已有 ucrt64/bin命令行直接用.vscode/settings.jsoncmake.environment.PATHVSCode 中 CMake Tools 能找到 GCC/Ninja——最关键build.sh / build.cmdexport PATH…:$PATH命令行脚本也能找到工具{ cmake.environment : { PATH : C:/msys64/ucrt64/bin;${env:PATH} } } 如果 PATH 配错CMake configure 时报 arm-none-eabi-gcc not found - 检查 settings.json 的 cmake.environment.PATH。90% 的 Windows 嵌入式 CMake 配置问题都是 PATH 没配对。本页大纲PATH 环境变量① PATH 的本质目录搜索列表→ ② 三层配置场景终端/VSCode/脚本→ ③ 检查与调试 PATH → ④ 交互PATH 搜索过程模拟 → ⑤ 为什么 VSCode 里找不到命令 PATH 的本质——“当你说 gccWindows 去哪找”当你输入gcc并按回车Windows 会按顺序搜索 PATH 里的每个目录找到第一个gcc.exe就执行。PATH 就是一张目录搜索清单。目录顺序 优先级——同名工具先找到谁就用谁。 检查 PATH——两行命令确认一切正常$ echo $PATH # 查看完整 PATH分号分隔 /c/msys64/ucrt64/bin:/usr/bin:/usr/local/bin:... $ which gcc # 确认 gcc 从哪来 /c/msys64/ucrt64/bin/gcc.exe ← 说明 PATH 配置正确 $ gcc --version # 验证能执行 版本 gcc.exe (GNU Toolchain for the Arm Architecture 16.1) 16.1.0 为什么VSCode 里找不到命令最常见的坑你在普通终端能用 gcc但 VSCode 的集成终端说找不到。原因VSCode 继承的是启动 VSCode 那一刻的环境变量——如果你先启动 VSCode 再修改 PATHVSCode 不知道。解决改完 PATH 后重启 VSCode。第 37 课会教更稳的方案settings.json 里显式注入。️ PATH 的三层配置场景——你会在三个地方见到它场景PATH 从哪来配置方式MSYS2 终端MSYS2 自动生成含 ucr64/bin开箱即用无需配置VSCode 集成终端继承 VSCode 启动时的系统 PATH可能缺 ucr64/bin → 需 settings.json 注入第 37 课CI 脚本 / 命令行系统 PATH 用户 PATH需手动 export PATH 或全路径调用第 47 课 tasks.json 本页小结PATH 是工具链的门牌号系统——Windows 靠它找到每个工具。理解顺序即优先级“多入口叠加”“修改需重启”你就能自己解决 90% 的找不到命令问题。⚙️ PATH 配置实操——三种改法任选方式操作特点图形界面WinR → sysdm.cpl → 高级 → 环境变量 → Path → 新增 C:\msys64\ucrt64\bin一劳永逸所有程序生效终端命令export PATH“/c/msys64/ucrt64/bin:$PATH”临时仅当前终端刷新即失效VSCode 配置settings.json 里 cmake.environment.PATH 注入仅 VSCode 内生效第 37 课 推荐组合图形界面改系统 PATH保证 cmd/CI 能用VSCode settings.json 注入保证 CMake Tools 能找到——两条腿走路任何场景都不掉链子。 PATH 常见误区——这三句话千万别信误区真相“改完 PATH 立即生效”错——已打开的终端和 VSCode 都要重启才生效“PATH 越短越好”错——缺了关键目录就找不到工具关键是该在的都在“which 找到就行了”对一半——还要看找到的是不是想要的那个顺序即优先级工具链组件详解arm-none-eabi-gcc — 一套工具链八个子工具arm-none-eabi-gcc 不只是一个可执行文件——它是一整套工具链包含编译器、汇编器、链接器、格式转换器等至少 8 个子工具。arm-none-eabi-gcc 工具链中的核心子工具子工具输入输出谁调用arm-none-eabi-gcc.c 文件.o 文件CMake/Ninja编译阶段arm-none-eabi-as.S/.s 汇编.o 文件CMake/Ninja汇编阶段arm-none-eabi-ld.o .a 库.elf 文件CMake/Ninja链接阶段arm-none-eabi-objcopy.elf.hex / .binPOST_BUILD 自定义命令arm-none-eabi-size.elfFlash/RAM 报告POST_BUILD 自定义命令arm-none-eabi-nm.elf符号列表地址表手动调试HardFault 定位arm-none-eabi-objdump.elf反汇编代码手动调试查看生成的汇编名字拆解arm-none-eabi 的含义部分含义arm目标 CPU 架构是 ARM。编译出的机器码是 ARM 指令集Cortex-M0 是 ARMv6-M Thumb。none没有操作系统——裸机。gcc 不会去链接 glibc/pthread 等 OS 级别的库。eabi嵌入式应用二进制接口Embedded ABI——定义了函数参数传递、寄存器使用、栈布局等底层约定。 对比你本机的 gcc你本机 gcc 编译 x86_64-w64-mingw32 程序——可以在你电脑上直接运行。arm-none-eabi-gcc 编译的程序不能在你电脑上跑——只能在 ARM Cortex-M 芯片上运行。这就是交叉编译——在一台机器上编译另一台机器的程序。CMake Ninja — 构建生成器 并行编译引擎CMake 不直接编译——它生成构建规则文件build.ninja然后交给 Ninja 执行实际编译。对比MakeNinja设计目标人类可写可读机器生成——专为 CMake 设计编译速度一般递归 make 更慢极快——自动检测 CPU 核数并行输出格式每文件一行输出进度条 只显示错误和警告 LKS32 项目实测30 文件全量编译Ninja 完成只需 3-5 秒。增量编译只改一个 .c不到 1 秒。这就是为什么我们不用 Makefile。本页大纲工具链组件详解① gcc 三件套gcc/objcopy/size→ ② CMake 与 Ninja 的分工 → ③ gdb-multiarch 与 J-Link 的协作 → ④ 交互工具链版本速查 → ⑤ 工具链验证清单 arm-none-eabi-* 家族——一次安装八个命令安装 arm-none-eabi-gcc 会同时提供一串前缀为 arm-none-eabi- 的命令。它们来自同一套 GNU 工具链各司其职 CMake 与 Ninja 的分工——“大脑与手脚”维度CMakeNinja角色构建系统生成器大脑构建执行引擎手脚做什么解析 CMakeLists → 生成 build.ninja读 build.ninja → 并行执行编译命令触发cmake --preset debugconfigurecmake --buildbuild类比设计图纸的工程师按图纸施工的工头产物build.ninja CMakeCache.txt.o 文件 .elf .hex 为什么不用 MakeNinja 是专为增量编译速度设计的全量构建 Ninja 比 Make 快约 2 倍增量快约 2.5 倍第 07 课有实测表。对嵌入式这种几百个文件的工程省下的都是真金白银的时间。✅ 工具链验证清单——装完立刻自查$ arm-none-eabi-gcc --version # ① 交叉编译器应显示 16.1.0 $ cmake --version # ② CMake应 ≥ 3.20 $ ninja --version # ③ Ninja应显示 1.13.x $ gdb-multiarch --version # ④ 调试器 $ JLink.exe # ⑤ J-Link无参数启动 GUI 即成功 # 全部成功 环境就绪下一步第 06 课逐个安装 本页小结工具链不是一个 gcc而是一整个 arm-none-eabi-家族 CMake Ninja GDB J-Link 的协作体系*。装完之后用五连验证确认环境就毕业了。 GDB 与 J-Link 的协作——软件与硬件的握手 工具链验证的黄金五分钟——新机器 5 分钟确认环境可用 本页小结GDB 管逻辑、J-Link 管硬件、芯片执行代码——三层协作才是完整的调试链。环境搭建本身只要 5 分钟镜像加速后难的从来不是装而是理解。 快速自检——你能回答这 5 个问题吗#问题答案1MSYS2 是虚拟机吗不是——原生工具集2工具装在哪C:\msys64\ucrt64\bin3PATH 有什么用告诉 Windows 去哪找命令4gcc 和 objcopy 分别干嘛gcc 编译、objcopy 转格式5GDB 和 J-Link 谁管硬件J-Link 管硬件GDB 管逻辑安装后验证与排错安装后验证——确保一切正常装完不代表能用。必须逐项验证——在出问题之前搞定。四步验证清单终极测试编译 LKS32 项目看到FLASH: 1280 B (3.91%)——环境完全正常常见环境问题速查症状解决arm-none-eabi-gcc: command not found用 UCRT64 终端非 MSYS2 终端- pacman -S 安装CMake 找不到 arm-none-eabi-gcc检查 .vscode/settings.json - cmake.environment.PATH 含 C:/msys64/ucrt64/binpacman 下载极慢切换清华/中科大镜像源 - pacman -Syucmake configure 报 TRY_COMPILE 失败确认 toolchain.cmake 中有 CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARYJLink.exe 找不到从 segger.com 下载安装 J-Link Software第七课会详解本页大纲验证与排错① 环境就绪的完整验证流程 → ② 四大常见错误速排 → ③ 交互排错场景演练 → ④ 环境快照保存配置→ ⑤ 下一课预告 环境就绪验证——一条命令走完全流程$ arm-none-eabi-gcc --version gcc.exe (GNU Arm Embedded Toolchain 16.1) 16.1.0 Copyright (C) 2025 Free Software Foundation, Inc. $ cmake --version cmake version 4.4.0 CMake suite maintained and supported by Kitware (kitware.com/cmake). $ ninja --version 1.13.2 $ which gcc cmake ninja /c/msys64/ucrt64/bin/gcc.exe /c/msys64/ucrt64/bin/cmake.exe /c/msys64/ucrt64/bin/ninja.exe ← 三个都在 ucr64/binPATH 正确 验收标准版本号对上 三个 which 都指向 ucrt64/bin 环境 100% 就绪。如果版本偏低如 CMake 3.18先升级再继续——第 07 课讲版本为什么重要。 四大常见错误速查表——遇到直接查#报错根因解决1‘gcc’ 不是内部或外部命令PATH 没有 ucr64/bin检查 PATH重启终端2CMake Error: Unable to find a build programNinja 未安装或不在 PATHpacman -S ninja 后重试3cortex-debug: Cannot find gdbgdb-multiarch 未装pacman -S gdb-multiarch4pacman: failed to synchronize镜像源不可达第 08 课切换国内镜像 环境快照——把配置存档随时恢复环境搭好之后强烈建议把安装的包列表导出存档——换电脑、重装系统、团队新成员一条命令还原全部工具# 导出已安装包列表备份 $ pacman -Q msys2-packages.txt # 在新机器上还原 $ cat msys2-packages.txt | xargs pacman -S --needed # 一条命令装回所有工具——第 08 课镜像加速后 30 秒搞定 本页小结 本课总结环境搭建的完整闭环安装06-08 课→ 验证本页→ 快照备份→ 排错速查表。环境一旦就绪后面 50 多课都在这个地基上盖楼。 下一课预告第 06 课全景你已经看完了——现在动手装下一课安装 arm-none-eabi-gcc 工具链一行 pacman 命令 包名逐段拆解 PATH 配置 GCC 版本选择——装完你就能跑通第一个 LKS32 编译。 环境搭建 FAQ——十分钟速查问题答案必须用 MSYS2 吗不是必须——可以官网装 GCC/CMake/Ninja 各装各的。但 MSYS2 统一管理最省心且第 08 课镜像加速只有 MSYS2 有UCRT64 和 MINGW64 选哪个新项目一律 UCRT64——微软官方 CRTWin10 完美兼容装完要配置什么只要 PATHC:\msys64\ucrt64\bin一项VSCode 里再配 settings.json第 37 课J-Link 也要 pacman 装吗不行——J-Link 是 SEGGER 闭源软件必须官网下载pacman 里没有gdb 用哪个gdb-multiarch多架构而非 gdb原生——它才能调试 ARM装了 CMake 4.4 够用吗够——≥3.20 就满足 CMakePresets 要求4.x 是超配 环境阶段收官第 05 课全景 第 06 课装 GCC 第 07 课装 CMake/Ninja 第 08 课镜像加速——四课合起来就是5 分钟装好整个环境的完整教程。下一课开始动手 环境就绪后的第一个里程碑——“Hello 流水线”环境装完先别急着写 CMake——用最小成本验证整条流水线# 1. 写一个最小 C 文件 $ echo int main(){return 0;} hello.c # 2. 交叉编译到 ARM不是本机 $ arm-none-eabi-gcc -mcpucortex-m0 -mthumb -c hello.c -o hello.o # 3. 链接 $ arm-none-eabi-gcc -mcpucortex-m0 -mthumb hello.o -o hello.elf # 4. 看它是不是 ARM 格式 $ file hello.elf hello.elf: ELF 32-bit LSB executable, ARM, EABI5 , statically linked ^^^^ ARM 架构确认交叉编译成功 里程碑意义如果 file 输出显示 ARM——说明GCC 交叉编译 PATH 配置全部正确。这是你环境的出生证明。接下来第 06 课正式安装工具链第 19 课讲透为什么 -mcpucortex-m0。
返回列表