文章目录

  • C语言编译过程


C语言编译过程

从源代码直接生成可执行文件

g++ main.cpp -o main.o

这一条命令包含下面几个过程:预处理 编译 汇编 链接

  • 预处理(Preprpcessing)
    使用预处理器把源文件main.cpp经过预处理生成main.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正的内容。
    预处理的命令为:
g++ -E main.cpp -o main.i
  • 编译(Compilation)
    使用编译器将预处理文件main.i编译成汇编文件main.s。
    编译的命令为:
g++ -S main.i -o main.s
  • 汇编(Assemble)
    使用汇编器将汇编文件main.s转换成目标文件main.o
    汇编过程的命令为:
g++ -c main.s -o main.o
  • 链接(Linking)
    链接过程使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。
    链接过程的命令为:
g++ main.o -o main
  • 静态链接
g++ -static main.cpp -o main

C语言编译过程_目标文件

  • 运行
./main
  • 使用GDB调试C文件
    编译C/C++文件
g++ -g main.cpp -o main

调试C程序

gdb main

GDB调试命令

  • 反汇编
objdump -d main

C语言编译过程_开发语言_02

  • 查看C/C++文件的链接文件
g++ -v main.cpp

C语言编译过程_预处理_03