2. 开发环境搭建:Windows下安装MinGW/MSVC、Linux下安装GCC/Clang、macOS下安装Xcode Command Line Tools

说实话,跨平台开发的第一道坎,就是环境搭建。

我见过太多新手,代码写得挺溜,结果卡在装编译器上,一卡就是一整天。我自己早年也踩过不少坑——Windows下MinGW路径配错,Linux下GCC版本太老,macOS上Xcode装完找不到clang……嗯,今天咱们就把这些坑一个个填平。

2.1 为什么不同平台要装不同的编译器?

你想想看,Windows、Linux、macOS,底层API和ABI都不一样。Windows用PE格式,Linux用ELF,macOS用Mach-O。编译器得知道怎么生成对应格式的二进制文件。

说白了,你写的是同一份C/C++代码,但编译器得“入乡随俗”。

核心原则:目标平台是什么,就用那个平台的原生编译器。交叉编译是另一回事,咱们后面再聊。

2.2 Windows:MinGW vs MSVC

Windows下有两个主流选择:MSVC(微软的)和MinGW(GCC的Windows移植版)。

我个人习惯是:做Windows原生开发用MSVC,做跨平台项目用MinGW。为什么?因为MinGW生成的二进制文件依赖msvcrt.dll,而MSVC依赖不同版本的VC运行时库,部署起来更麻烦。

2.2.1 安装MSVC

MSVC是Visual Studio的一部分。你不需要装完整的VS,装个Build Tools就够了。

  1. 去微软官网下载“Visual Studio Build Tools”
  2. 运行安装程序,勾选“使用C++的桌面开发”
  3. 安装完成后,打开“Developer Command Prompt”就能用cl.exe了
# 验证安装
cl.exe
# 输出类似:Microsoft (R) C/C++ Optimizing Compiler Version 19.xx

小技巧:我习惯把cl.exe的路径加到系统PATH里。这样在普通cmd里也能直接编译,不用每次都开Developer Command Prompt。

2.2.2 安装MinGW

MinGW有两个主流发行版:MinGW-w64和TDM-GCC。我个人推荐MinGW-w64,因为它更新更活跃。

  1. 访问MinGW-w64的SourceForge页面,下载安装器
  2. 选择架构:x86_64(64位)或i686(32位)
  3. 选择线程模型:posix(推荐)或win32
  4. 安装完成后,把bin目录加到PATH里
# 验证安装
gcc --version
# 输出类似:gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 13.2.0

避坑指南:我曾经在MinGW的路径里加了空格,结果编译时死活找不到头文件。折腾了两小时才发现是路径问题。记住:编译器路径里不要有空格,不要有中文!

2.3 Linux:GCC vs Clang

Linux下GCC是标配,几乎每个发行版都预装了。Clang这几年也越来越流行,尤其在LLVM生态里。

我的经验是:GCC兼容性最好,Clang错误信息更友好。如果你刚开始学,我建议先用GCC,等熟悉了再试试Clang。

2.3.1 安装GCC

不同发行版的包管理器不一样,但命令大同小异。

# Debian/Ubuntu
sudo apt update
sudo apt install build-essential

# CentOS/RHEL/Fedora
sudo yum groupinstall "Development Tools"
# 或者
sudo dnf groupinstall "Development Tools"

# Arch Linux
sudo pacman -S base-devel

build-essential这个包会帮你装好gcc、g++、make等一整套工具。嗯,省心。

# 验证安装
gcc --version
g++ --version
make --version

2.3.2 安装Clang

Clang在Ubuntu上安装也很简单。

sudo apt install clang lldb lld

lldb是调试器,lld是链接器。如果你只装clang,也能用,但少了调试功能。

个人经验:我在项目中遇到过GCC和Clang对同一段代码的优化结果不同。比如某些循环展开,GCC做得更激进,Clang更保守。所以如果你做性能敏感的项目,建议两个编译器都测一下。

2.4 macOS:Xcode Command Line Tools

macOS下开发C/C++,最正统的方式是装Xcode Command Line Tools。它包含了Clang编译器、LLDB调试器、make等工具。

你不需要装完整的Xcode(那个太大了,十几个G)。Command Line Tools只有几百兆,够用了。

2.4.1 安装方法

最简单的方式是在终端里运行:

xcode-select --install

系统会弹出一个对话框,点击“安装”就行。如果没弹出来,说明已经装过了。

# 验证安装
clang --version
# 输出类似:Apple clang version 15.0.0 (clang-1500.3.9.4)

注意:Apple的Clang和LLVM官方的Clang版本号不同。Apple会自己打补丁,所以版本号看起来会落后一些。但不用担心,功能上基本一致。

2.4.2 安装Homebrew(可选)

如果你需要GCC或者其他工具,可以用Homebrew安装。

# 安装Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装GCC
brew install gcc

# 安装LLVM(官方版Clang)
brew install llvm

我个人习惯在macOS上同时保留Apple Clang和Homebrew装的GCC。Apple Clang用于日常开发,GCC用于验证代码兼容性。

2.5 知识体系总览

下面这张图帮你理清思路:

跨平台开发环境搭建 Windows Linux macOS MSVC MinGW-w64 GCC Clang Xcode CLT VS Build Tools SourceForge安装器 apt/yum/pacman apt install clang xcode-select --install 核心原则:目标平台用什么编译器,就用什么编译器 交叉编译是另一回事,后面章节会详细讲

2.6 验证环境是否搭好

不管哪个平台,装完之后写个Hello World试试:

#include <iostream>

int main() {
    std::cout << "Hello, Cross-Platform World!" << std::endl;
    return 0;
}

编译运行:

# Windows (MSVC)
cl hello.cpp
hello.exe

# Windows (MinGW)
g++ hello.cpp -o hello.exe
hello.exe

# Linux/macOS
g++ hello.cpp -o hello
./hello

如果看到输出,恭喜你,环境搭好了。

避坑指南:我曾经在Windows下用MinGW编译一个项目,链接时报了一堆undefined reference。查了半天,发现是MinGW的版本太老,不支持C++17的某些特性。后来换了最新版MinGW-w64,问题解决。所以,记得用最新稳定版。

2.7 多版本管理

有时候你需要同时用多个版本的编译器。比如项目A要求GCC 9,项目B要求GCC 13。

我的做法是用软链接或者环境变量切换。

Linux下用update-alternatives

# 安装多个GCC版本
sudo apt install gcc-9 g++-9 gcc-13 g++-13

# 配置优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100

# 切换版本
sudo update-alternatives --config gcc

macOS下用brew切换

# 安装多个版本
brew install gcc@9 gcc@13

# 用符号链接切换
ln -sf /usr/local/bin/gcc-13 /usr/local/bin/gcc

小技巧:我习惯在项目根目录放一个CMakePresets.json,里面指定编译器路径。这样不同项目自动用不同编译器,省心。

2.8 总结

环境搭建这事儿,说白了就是三步:选对编译器、装对版本、配好路径。

Windows下MSVC和MinGW二选一,Linux下GCC和Clang都行,macOS用Xcode Command Line Tools最省事。

嗯,记住一点:别在路径里加空格和中文。这个坑我替你们踩过了。

一句话记住:编译器装好了,跨平台开发的第一步才算迈出去。

可可精品资料库