objdump和gcc命令简单入门
前言
objdump是用于查看目标文件的命令行工具,常配合另一个命令行工具gcc使用。通过objdump查看汇编代码可以进行一些代码调优,明白实现同一功能的不同代码写法在底层的差异。
GCC的使用
GCC介绍
GCC(GNU Compiler Collection)是由 GNU 开发的编程语言编译器。GCC 编译工具链在编译一个C源文件时需要经过以下 4 步:
- 预处理:也称为预编译阶段,主要处理源代码文件中以“#”开始的预编译指令。如“#include”、“#define”等。主要处理规则如下:
- 删除所有“#define”,并展开所有的宏定义。
- 处理条件预编译指令,如“#if”、“#ifdef”、“#elif”、“#else”、“#endif”。
- 处理“#include”预编译指令,将被包含文件插入到该预编译指令的位置。这是一个递归操作,要避免重复包含。
- 删除所有的注释“//”和“/**/”
- 添加行号和文件名标识
- 保留#progma编译器指令,因为后续编译器还需要使用。
# 生成预处理后文件的命令
$gcc -E hello.c -o hello.i
$cpp hello