g++ 编译单个。cpp 文件最简流程是直接运行 g ++ 命令,默认生成 a.out;需用 g ++ 而非 gcc 以自动链接 C ++ 标准库;开发阶段应始终启用 -Wall -Wextra - g 选项并注意头文件包含路径。

g++ 编译单个 .cpp 文件最简流程
直接用 g++ 就能完成,不需要额外配置或项目文件。默认生成可执行文件 a.out,不加 -o 参数时别指望看到和源文件同名的输出。
-
g++ hello.cpp→ 生成a.out,运行用./a.out -
g++ -o hello hello.cpp→ 指定输出为hello,运行更直观 - 如果报
command not found: g++,说明没装编译器,Ubuntu/Debian 系统先跑sudo apt install build-essential,CentOS/RHEL 用sudo yum groupinstall "Development Tools"
遇到 undefined reference to `std::cout' 怎么办
这是链接阶段失败,不是语法错,常见于误用了 gcc 而非 g++。C++ 标准库(如 std::cout、std::string)的符号由 libstdc++ 提供,gcc 默认不链接它,g++ 才会自动加。
- ✅ 正确:用
g++ main.cpp - ❌ 错误:用
gcc main.cpp(即使文件里只有 C++ 代码) - ⚠️ 补救:若坚持用
gcc,得手动加-lstdc++,即gcc main.cpp -lstdc++,但没必要绕路
加调试信息和警告,别等崩溃了才想起
刚写完的代码大概率有隐患,开警告和调试符不是“进阶操作”,是防止低级错误的第一道筛子。
-
g++ -Wall -Wextra -g -o prog prog.cpp:开启常用警告 + 调试信息,gdb和valgrind都依赖-g -
-Wall不等于“所有警告”,比如未初始化变量可能漏掉,加上-Wuninitialized或直接用-Wextra更稳妥 - 生产环境去掉
-g可减小体积,但开发阶段永远带上——没有调试信息的 core dump 基本没法查
头文件找不到?路径和顺序很关键
#include "xxx.h" 和 #include <yyy.h></yyy.h> 查找逻辑不同,系统头文件路径也未必默认包含你的目录。
立即学习 “C++ 免费学习笔记(深入)”;
-
"xxx.h"先在当前目录找,再按-I指定路径顺序搜索;<yyy.h></yyy.h>直接跳过当前目录,只走-I和系统路径 - 自定义头文件放当前目录就用
"myheader.h";想统一管理到include/下,编译时加-I./include - 别把
-I路径写成-I include/(开头空格),shell 会当成两个参数,g++报fatal error: no input files
实际写多了就会发现,编译失败十次里有七次是路径、命名或混用 gcc/g++ 导致的,而不是语法本身。把 -Wall -g 当成肌肉记忆,比记住所有选项重要得多。






























