如何在 Windows、Mac、Linux 上编译运行 C++
一句话:Windows → 装 Visual Studio Community(或 MinGW 的 g++);Mac → 终端一条命令装 Apple 的 clang++;Linux → 包管理器装 g++。三个都免费。不想要浏览器?我们的在线练习场随时在。
在线练习场适合上课,但迟早你需要电脑上真正的编译器:更大的程序、std::vector 和完整标准库、真正的调试。这是每个系统最短的路径。
Windows:Visual Studio Community(推荐)
- 从 visualstudio.microsoft.com 下载 Visual Studio 2022 Community(免费)。
- 安装器里勾选工作负载 "使用 C++ 的桌面开发"。这一个勾带来 MSVC 编译器、调试器和 Windows SDK。
- 装好启动,文件 → 新建项目 → 控制台应用 (C++)。它生成一个带
main的 Hello World。 - 按 F5 编译运行。
轻量替代:喜欢命令行的话,装 MSYS2 拿到正宗 g++:
pacman -S mingw-w64-ucrt-x86_64-gcc
g++ --version # 验证
Mac:Xcode 命令行工具(一条命令)
不需要完整 Xcode。打开终端运行:
xcode-select --install
弹出对话框,点安装。几分钟后你就有了 clang++(Apple 的 clang,兼容 gcc 参数)。验证:
clang++ --version
Linux:一行包管理器
sudo apt install g++ # Debian/Ubuntu
sudo dnf install gcc-c++ # Fedora
g++ --version # 验证
在终端编译并运行(所有系统)
把这段存成 main.cpp:
#include <iostream>
int main() {
std::cout << "It compiles!" << std::endl;
return 0;
}
然后,在文件所在目录:
g++ main.cpp -o main # 编译:生成可执行文件 main(Windows 下是 main.exe)
./main # 运行(Windows: main.exe 或 .\main.exe)
值得从第一天就用的参数:
g++ -std=c++20 -Wall main.cpp -o main
# └─ 现代标准 └─ 打开警告 — 永远开着
实际发生了什么:编译 → 链接 → 运行
那一条 g++ 命令其实干了两件事:编译器把 .cpp 翻成机器码(目标文件),链接器把它们缝成可执行文件。这解释了我们编译错误指南里的两个家族:error: 来自编译器(语言规则),undefined reference 来自链接器(许下的函数没兑现)。
人人都会撞的安装错误
'g++' 不是内部或外部命令/command not found— 编译器装了,但终端找不到。Windows 上几乎都是 PATH 问题:MSYS2 的ucrt64\bin必须进 PATH,而且改完要新开一个终端。g++: error: main.cpp: No such file or directory— 目录不对。cd到文件真实所在(或给全路径)。- 程序一闪而过(Windows) —
main一返回控制台窗口就关。用终端运行而不是双击,或下断点;别用system("pause")那个老偏方。 - 杀毒软件拦你刚编译的
main.exe— 无签名的可执行文件偶尔触发启发式;给项目文件夹加白名单。
需要 IDE 吗?
不需要 — 文本编辑器加终端就是完整环境,还能让你看清 IDE 替你做了什么。但有个好的折中:VS Code(免费)+ 官方 C/C++ 扩展 — 上面那些简单的 g++ 命令照用,同时获得语法高亮、点错跳转和调试。Visual Studio(Windows)和 Xcode(Mac)依然是"全包"选项。
该用哪个标准?
- 2026 年学 C++:
-std=c++20— 现代特性,现行编译器全支持。 - 跟老教程:它们通常指 C++11/14;C++11 之后的任何版本都能跑。
- 求职面试:掌握 C++11 核心特性(auto、范围 for、智能指针、lambda);C++17/20 越来越被期待。
练习
- 带
-Wall编译运行上面的main.cpp— 干干净净,零警告。 - 故意弄坏:删一个分号,见一见
error: expected ';',再修好。这条错和它的朋友们都收进了常见错误指南。 - 试试
std::vector和std::string— 完整标准库在桌面上全开,哪怕浏览器练习场只覆盖教学核心。
相关:从Hello World 一课开始,然后是什么是 int main(),编译报错了就翻10 大编译错误解读。