C / C++ 速查
共 25 条 C / C++ 编译与工具链命令,覆盖编译链接、运行调试、查看分析、库与预处理器 四组场景。支持搜索与分类筛选,点击即可复制。
编译与链接
gcc 编译 C,g++ 编译 C++。
| 命令 / 语法 | 说明 |
|---|---|
| 编译并链接为可执行文件 app | |
| 编译 C++ | |
| 只编译不链接,生成目标文件 | |
| 指定标准、开启警告与优化 | |
| 带调试信息编译(供 gdb 使用) | |
| 指定头文件 / 库目录并链接库(-l 去前缀) | |
| 按 Makefile 构建(并行 4 任务) |
运行与调试
执行、调试与内存检查。
| 命令 / 语法 | 说明 |
|---|---|
| 运行程序并传参 | |
| 启动调试器(run / break / bt / print) | |
| 检测内存泄漏与越界 | |
| 跟踪系统调用,排查文件 / 网络问题 | |
| 统计运行耗时 | |
| 编译时启用 AddressSanitizer 定位内存错误 |
查看与分析
分析二进制与依赖。
| 命令 / 语法 | 说明 |
|---|---|
| 查看符号表(大写 T 为定义的函数) | |
| 查看可执行文件依赖的动态库 | |
| 反汇编 | |
| 查看文件类型与架构 | |
| 查看各段(text/data/bss)大小 | |
| 只做预处理,展开宏与头文件 |
库与预处理器
静态库、动态库与宏。
| 命令 / 语法 | 说明 |
|---|---|
| 打包成静态库 .a | |
| 生成动态库 .so | |
| 静态链接(产物大但无运行时依赖) | |
| 引入系统头 / 本地头(本地用双引号) | |
| 宏定义与条件编译 | |
| 命令行定义宏 |
使用说明
C / C++ 命令速查:gcc/g++ 编译链接、gdb/valgrind 调试、二进制分析与静态/动态库;支持搜索与分类筛选,点击即可复制。
- 按用途点分类:编译与链接、运行与调试、查看与分析、库与预处理器。
- 点「命令」列复制,替换源文件名、库名与头文件路径后执行。
- 编译先加 -Wall 看警告;线上程序用 -O2 优化、崩溃排查用 -g + gdb。
- 内存问题优先用 valgrind 或 -fsanitize=address 定位。
常见问题
- gcc 和 g++ 有什么区别?
- gcc 默认按 C 规则编译、C++ 标准库不一定自动链接;g++ 默认按 C++ 处理并链接 C++ 标准库。编译 C++ 建议直接用 g++,避免手动加 -lstdc++。
- -l 和 -L、-I 怎么区分?
- -I 指定头文件搜索目录,-L 指定库文件搜索目录,-l 指定要链接的库名(去掉 lib 前缀与 .so/.a 后缀),例如 -lmylib 对应 libmylib.so。
- 静态链接和动态链接怎么选?
- 静态链接(-static)产物不依赖运行时库、便于分发但体积大;动态链接体积小、多程序共享库,但目标机需有对应库。服务器分发常选静态或自包含。
- 程序崩溃怎么快速定位?
- 用 -g 编译后运行 gdb ./app,崩溃时执行 bt(backtrace)看调用栈;内存越界 / 泄漏用 valgrind --leak-check=full 或编译时加 -fsanitize=address。