objdump和gcc命令简单入门

本文介绍了GCC编译器的工作流程,包括预处理、编译、汇编和链接四个阶段,并详细讲解了GCC的调试选项-g。同时,探讨了objdump工具的使用,特别是其在反汇编方面的功能,如-d参数、-S参数和-C参数等。通过实例展示了如何结合这两个工具进行代码分析和优化。
摘要由CSDN通过智能技术生成

前言

objdump是用于查看目标文件的命令行工具,常配合另一个命令行工具gcc使用。通过objdump查看汇编代码可以进行一些代码调优,明白实现同一功能的不同代码写法在底层的差异。

GCC的使用

GCC介绍

GCC(GNU Compiler Collection)是由 GNU 开发的编程语言编译器。GCC 编译工具链在编译一个C源文件时需要经过以下 4 步:

  1. 预处理:也称为预编译阶段,主要处理源代码文件中以“#”开始的预编译指令。如“#include”、“#define”等。主要处理规则如下:
  • 删除所有“#define”,并展开所有的宏定义。
  • 处理条件预编译指令,如“#if”、“#ifdef”、“#elif”、“#else”、“#endif”。
  • 处理“#include”预编译指令,将被包含文件插入到该预编译指令的位置。这是一个递归操作,要避免重复包含。
  • 删除所有的注释“//”和“/**/”
  • 添加行号和文件名标识
  • 保留#progma编译器指令,因为后续编译器还需要使用。
# 生成预处理后文件的命令
$gcc -E hello.c -o hello.i
$cpp hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值