linux编译器gcc/g++的使用,查看编译链接的过程

目录:

  • 前言:
  • 1.程序的编译过程:预处理,编译,汇编,链接
    • 1.1预处理:展开头文件 宏替换 去掉注释
    • 1.2编译:检查语法,语法没有问题生成汇编代码文件
    • 1.3汇编:把汇编代码转成机器代码(二进制代码)
    • 1.4链接:将多个目标程序和库连结在一起,找到相关函数的地址填到调用的地方,生成可执行文件

前言:

gcc ==> 编译C语言
格式:gcc [选项] 要编译的文件 [选项] [目标文件]
g++ ==> 编译C/C++

1.程序的编译过程:预处理,编译,汇编,链接

1.1预处理:展开头文件 宏替换 去掉注释

• 对于gcc或者g++,需要添加命令行参数 -E,生成的文件后缀为 .i
-E:告诉gcc或者g++,在编译过程中,完成预处理之后就停下来

eg:gcc -E test.c -o test.i
linux编译器gcc/g++的使用,查看编译链接的过程_第1张图片

1.2编译:检查语法,语法没有问题生成汇编代码文件

• 对于gcc或者g++,需要添加命令行参数 -S,生成的文件后缀为 .s
-S:告诉gcc或者g++,在编译过程中,完成编译之后就停下来,生成汇编代码,生成一个.s文件

eg:gcc -S test.c -o test.s
linux编译器gcc/g++的使用,查看编译链接的过程_第2张图片

1.3汇编:把汇编代码转成机器代码(二进制代码)

• 对于gcc或者g++,需要添加命令行参数 -c,生成的文件后缀为 .o
-c:告诉gcc或者g++,在编译过程中,完成汇编之后就停下来,生成一个 .o 文件
• .o 文件相当于win当中的目标程序(xxx.obj)

eg:gcc -c test.c -o test.o
linux编译器gcc/g++的使用,查看编译链接的过程_第3张图片

1.4链接:将多个目标程序和库连结在一起,找到相关函数的地址填到调用的地方,生成可执行文件

eg:gcc test.c -o test
linux编译器gcc/g++的使用,查看编译链接的过程_第4张图片
注:./test告诉bash要执行的文件是当前路径下的test文件

你可能感兴趣的:(linux,linux,gcc编译器,编译器,g++编译器,编译链接)