GCC是一种编译器,可用于多种编程语言的变异,如C、Python等。
常见gcc 参数说明:
1. gcc hello.c //变异源代码并生成默认文件名为a.out的可执行程序
2. gcc -g hello.c //生成带诊断信息的可执行程序,用于使用gdb进行代码调试
3. gcc编译流程
1) 预处理:将源文件中包含的文件(#include)插入到文件中
gcc -E -o hello.i hello.c
2)编译:生成汇编文件
gcc -S -o hello.s hello.i
3)汇编:生成二进制机器码
gcc -c -o hello.o hello.s
4)链接:生成可执行程序
gcc -o hello hello.o
4. gcc 反汇编:根据二进制文件生成汇编文件,如何生成带源码的汇编文件?
1)首先生成二进制文件时需要带debug信息
gcc -g -c hello.c
2)使用objdump命令进行反汇编
objdump -S hello.o > hello.s
3)也可以使用gdb中的disas命令进行反汇编
(gdb) disas main
Dump of assembler code for function main:
0x000000000040057d <+0>: push %rbp
0x000000000040057e <+1>: mov %rsp,%rbp
0x0000000000400581 <+4>: sub $0x20,%rsp
0x0000000000400585 <+8>: mov %edi,-0x14(%rbp)