macOS 搭建 arm-gcc 构建环境
前置条件
mac 常用的包管理器是 brew(Homebrew),首先需要安装这个环境,后续才好方便地安装 mac 中所谓的「命令行工具」。
而安装 brew 又需要可以访问 GitHub的前置条件,在 mac 系统中很难使用我最爱的 steam++,那么有两种最简单方法。一是使用最通用的 VPN 方式——clash;二则更简单更小白,使用 UU 加速器就可以,UU 加速器搜索「学术」,即可免费加速。
等确认可以正确访问 GitHub 之后,在终端中使用以下指令。注意,这个指令最后有提示如何操作 PASH。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装完成后使用以下指令确认是否安装成功。
brew -v
安装编译链和构建工具
首先安装构建工具,cmake 和 jinja。
brew install cmake ninja
然后安装编译链,这里有一个问题,arm-gcc 不能直接使用 brew 安装原名包,这样可能是一种 without-headers 变体,缺少很多标准库和头文件。windows 下使用 msys2 管理也有类似这样的问题。
首先尝试卸载原名包和原名工具,如果有旧环境遗留,这一步将很重要。
brew uninstall arm-none-eabi-gcc arm-none-eabi-binutils
随后安装完整包
brew install --cask gcc-arm-embedded
PKG="$(find "$(brew --caskroom)/gcc-arm-embedded" -name '*.pkg' | head -n 1)"
[ -n "$PKG" ] || { echo "未找到 gcc-arm-embedded 的 pkg"; exit 1; }
installer -pkg "$PKG" -target CurrentUserHomeDirectory
TOOLBIN="$(find "$HOME/Applications/ArmGNUToolchain" -type d -path '*/arm-none-eabi/bin' | sort | tail -n 1)"
[ -n "$TOOLBIN" ] || { echo "未找到 ArmGNUToolchain bin 目录"; exit 1; }
for t in gcc g++ as ar objcopy size gdb nm objdump ranlib readelf strip addr2line gcc-ar gcc-nm gcc-ranlib; do
ln -sf "$TOOLBIN/arm-none-eabi-$t" "/opt/homebrew/bin/arm-none-eabi-$t"
done
最后验证完整工具,需要输出包含正确的头文件路径以及类似 stdint 的头文件名。
arm-none-eabi-gcc -v -E -x c - < /dev/null
然后就可以正常编译项目了
