素材阁

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 调试、二进制分析与静态/动态库;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:编译与链接、运行与调试、查看与分析、库与预处理器。
  2. 点「命令」列复制,替换源文件名、库名与头文件路径后执行。
  3. 编译先加 -Wall 看警告;线上程序用 -O2 优化、崩溃排查用 -g + gdb。
  4. 内存问题优先用 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。

延伸阅读

相关工具