3. macOS 环境准备
说实话,macOS 做跨平台开发,真的是个「甜点」选择。你想想看,它既有 Unix 的底层能力,又能跑各种主流工具链。但很多新手上来就卡在环境配置上——嗯,我当年也踩过不少坑。
这一章,咱们就把 macOS 的编译环境彻底捋顺。我会把 Xcode Command Line Tools、Homebrew、终端优化这三个核心环节,一个一个讲透。
3.1 Xcode Command Line Tools:编译器的基石
Xcode Command Line Tools(简称 CLT),说白了就是苹果官方提供的「命令行编译工具包」。它包含了 clang 编译器、make、git、ld 链接器等等。没有它,你在终端里连个 C 程序都编译不了。
我个人习惯是:不装完整的 Xcode(十几个 G 太占空间),只装 CLT 就够了。除非你要开发 iOS/macOS 原生应用,否则 CLT 完全够用。
xcode-select --install
执行后会弹出一个图形化窗口,点击「安装」即可。整个过程大概 3-5 分钟。
安装完成后,验证一下:
# 查看编译器版本
gcc --version
# 或者
clang --version
# 查看 CLT 路径
xcode-select -p
# 正常输出:/Library/Developer/CommandLineTools
sudo xcode-select --switch /Library/Developer/CommandLineTools 手动切换。
3.2 Homebrew:macOS 的「软件超市」
Homebrew 是什么?说白了就是 macOS 上的 apt-get 或 yum。你想装个 wget、ffmpeg、node.js,一行命令搞定,不用自己去源码编译。
我记得刚做开发那会儿,手动编译 OpenSSL 折腾了一下午——各种依赖缺失、版本冲突。后来用了 Homebrew,brew install openssl 三秒钟搞定。嗯,从此我就成了 Homebrew 的铁粉。
3.2.1 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
这个脚本会做几件事:
- 创建
/opt/homebrew目录(Apple Silicon 芯片)或/usr/local(Intel 芯片) - 安装 git、curl 等依赖
- 配置环境变量
- 先手动安装 CLT(上一节讲过了)
- 使用国内镜像源,比如中科大或清华的镜像
3.2.2 配置国内镜像源(加速下载)
为什么要配镜像?因为 Homebrew 的默认源在 GitHub,国内下载速度可能只有几十 KB/s。你想想看,装个包等半小时,谁受得了?
我个人推荐用中科大的镜像:
# 替换 Homebrew 核心仓库
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 替换 Homebrew Bottles(预编译包)
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc
3.2.3 常用操作速查
| 操作 | 命令 | 说明 |
|---|---|---|
| 安装包 | brew install <包名> |
例如 brew install cmake |
| 卸载包 | brew uninstall <包名> |
会清理依赖 |
| 更新所有包 | brew upgrade |
建议每周执行一次 |
| 清理旧版本 | brew cleanup |
释放磁盘空间 |
| 查看已安装 | brew list |
列出所有已安装的包 |
| 诊断问题 | brew doctor |
检查环境问题 |
brew update 卡住不动的情况。后来发现是 Homebrew 的临时文件锁住了。解决方案:rm -rf /opt/homebrew/var/homebrew/locks(Apple Silicon)或 rm -rf /usr/local/var/homebrew/locks(Intel)。
3.3 终端与 iTerm2 优化:让命令行「赏心悦目」
macOS 自带的终端其实够用,但说实话,颜值和功能都差点意思。iTerm2 是我用了十年的终端模拟器——分屏、热键、搜索、配色,样样都强。
3.3.1 安装 iTerm2
# 用 Homebrew 安装(推荐)
brew install --cask iterm2
# 或者去官网下载:https://iterm2.com/
3.3.2 我的 iTerm2 配置清单
以下是我个人习惯的配置,你可以参考:
- 配色方案: 我用的是一份叫「Dracula」的主题。在 iTerm2 的 Preferences → Profiles → Colors → Color Presets 里导入。
- 字体: 推荐
Fira Code或JetBrains Mono,支持连字(ligatures),代码看起来更舒服。 - 热键窗口: 设置一个全局快捷键(比如 Option+Space),按一下就能呼出/隐藏终端。我开发时几乎离不开这个功能。
- 分屏: Cmd+D 垂直分屏,Cmd+Shift+D 水平分屏。一边编译、一边看日志,效率翻倍。
3.3.3 Shell 配置:从 bash 到 zsh
macOS 从 Catalina 开始默认用 zsh 了。如果你还在用 bash,我建议你切换到 zsh——补全更强、主题更丰富、插件生态更好。
我的 ~/.zshrc 核心配置:
# 启用自动补全(默认就有,但可以增强)
autoload -Uz compinit && compinit
# 历史命令搜索
bindkey '^R' history-incremental-search-backward
# 别名配置(我常用的)
alias ll='ls -lah'
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias ..='cd ..'
alias ...='cd ../..'
# 设置编辑器
export EDITOR='vim'
# Homebrew 路径(Apple Silicon 必须)
eval "$(/opt/homebrew/bin/brew shellenv)"
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
装完之后,你只需要在 ~/.zshrc 里改一行 ZSH_THEME="agnoster",终端瞬间变好看。我个人用的是 powerlevel10k 主题,颜值拉满。
3.3.4 终端效率小技巧
- 快速跳转目录: 安装
zoxide(brew install zoxide),之后输入z 项目名就能跳转,不用记路径。 - 增强版 ls: 安装
exa(brew install exa),替代默认的 ls,支持颜色、图标、树形结构。 - 搜索历史命令: 按 Ctrl+R,输入关键字就能搜到之前执行过的命令。这个我每天用几十次。
vim 发现颜色不对,或者方向键乱码,大概率是终端类型设置问题。在 iTerm2 的 Preferences → Profiles → Terminal 里,把「Report Terminal Type」设为 xterm-256color。
3.4 验证环境:跑一个简单的测试
环境配好了,咱们来验证一下:
# 1. 验证编译器
echo '#include <stdio.h>
int main() { printf("Hello, Cross-Platform!\n"); return 0; }' > test.c
gcc test.c -o test
./test
# 输出:Hello, Cross-Platform!
# 2. 验证 Homebrew
brew list
# 应该能看到已安装的包列表
# 3. 验证终端
echo $SHELL
# 输出:/bin/zsh 或 /bin/bash
如果以上三步都正常,恭喜你——macOS 的编译环境已经准备就绪了。