Linux下gcc的使用与程序的翻译

gcc和程序的翻译过程

  • gcc介绍
  • 程序的翻译过程
    • 预编译
    • 编译
    • 汇编
    • 链接
  • 命令行式宏定义

gcc介绍

gcc是一款编译C语言编译器,可以把我们用vim写的代码编译成可执行程序。编译C++用g++进行编译,C++的文件后缀是test.cc或test.cpp或test.cxx
如果要安装g++就执行以下命令

sudo yum install gcc-c++//g++内核底层是gcc

Linux下gcc的使用与程序的翻译_第1张图片
gcc + 程序 就会形成可执行文件,默认是a.out,如果目录下已经存在,那么就会把a.out覆盖掉。

gcc -o + newname + 程序:给编译后的可执行程序重命名
gcc + 程序 -o + newname:给编译后的可执行程序重命名在这里插入图片描述

程序的翻译过程

程序的翻译过程包括预编译,编译,汇编和链接

预编译

预编译就是把程序进行宏替换,去注释等等,把代码变简单,预编译过后还是C语言文件

通过vim写下面一串代码,演示预编译的过程
Linux下gcc的使用与程序的翻译_第2张图片

gcc -E test.c -o newname//预处理命令
通过上述命令把生成的预编译文件写进新建的文件,建议后缀为“ .i ”,如果没有新的文件名,那么新建的文件就会打印在屏幕上。
Linux下gcc的使用与程序的翻译_第3张图片

用vim打开预编译后的文件,发现头文件展开了,宏被替换了,注释也没有了
Linux下gcc的使用与程序的翻译_第4张图片

编译

编译的过程是进行语法检查的过程,然后把C语言编译成汇编语言

gcc -S 预编译过的文件 -o newname//生成汇编文件的命令
也可以直接从c文件直接变为汇编文件
在这里插入图片描述

用vim打开刚刚生成的文件,里面就是汇编语言
Linux下gcc的使用与程序的翻译_第5张图片

汇编

把汇编语言编译成为二进制目标文件

gcc -c 汇编过的文件 -o newname//生成可重定位目标文件的命令
Windows里面生成的文件就是obj为后缀的文件,就是目标文件
在这里插入图片描述

链接

把库函数和我们的程序链接起来形成可执行程序

gcc test.o -o newname
也可以直接gcc test.o 后面什么都不加,直接形成可执行程序,这就是链接的过程
上述命令和最开始一部形成可执行文件一样,都是gcc + 文件
Linux下gcc的使用与程序的翻译_第6张图片

命令行式宏定义

如图,没有v1 的宏定义,但是可以通过命令行式的定义宏
gcc -D v1 test.c
如图2,这种定义宏的方式,可以更方便的改变宏
Linux下gcc的使用与程序的翻译_第7张图片Linux下gcc的使用与程序的翻译_第8张图片

你可能感兴趣的:(Linux,linux,运维)