GCC编译器(Linux下C语言开发环境的搭建)

GCC 编译器

Linux下使用最广泛的 C/C++ 编译器是 GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将 GCC 作为Linux下首选的编译工具。GCC 仅仅是一个编译器,没有界面,必须在命令行模式下使用。通过gcc命令就可以将源文件编译成可执行文件。

1、通过gcc命令一次性完成编译和链接的整个过程

参考文章

大家在学习C语言的过程中一般都这么做,最方便。

1) 编写源文件
$ cd demo  #进入源文件所在目录
$ touch hello.c  #使用 touch 命令创建一个名为 hello.c 的空文件 
$ gedit hello.c  #使用 gedit 命令编辑hello.c
2)生成可执行程序
$ gcc hello.c  #在 gcc 命令后面紧跟源文件名

注意:不像 Windows,Linux 不以文件后缀来区分可执行文件,Linux 下的可执行文件后缀理论上可以是任意的,这里的.out只是用来表明它是 GCC 的输出文件。
不管源文件的名字是什么,GCC 生成的可执行文件的默认名字始终是a.out
如果不想使用默认的文件名,那么可以通过-o选项来自定义文件名,例如:

$ gcc hello.c -o hello.out 

这样生成的可执行程序的名字就是hello.out
🐖 因为Linux下可执行文件的后缀仅仅是一种形式上的,所以可执行文件也可以不带后缀
🐖 通过-o选项也可以将可执行文件输出到其他目录,并不一定非得在当前目录下,如$ gcc hello.c -o ./out/hello.out

3)运行可执行程序

在控制台中输入程序的名字就可以,如下所示:

$ ./a.out

🐖 如果程序在其它目录下,运行程序时还要带上目录的名字,例如: $ ./out/hello.out

2、gcc命令分步骤编译的过程

参考文章

实际上,gcc命令也可以将编译和链接分开,每次只完成一项任务。
GCC的翻译过程可以分成四个阶段:预处理器、编译器、汇编器、链接器,执行这四个阶段的程序一起构成了一个编译系统。
在这里插入图片描述

1)预编译(生成.i文件)

预编译器cpp把源文件和相关的头文件(如实例代码中的头文件stdio.h)预编译成一个.i的文件。

执行的命令:gcc -E hello.c -o hello.i

预编译的作用:

a、处理所有的“#include”预编译指令

b、处理所有的"#define"指令,将代码中所有的"#define"删除,并展开所有的宏定义

c、处理所有的条件预编译指令,如#if #elif #else #ifdef #ifnodef #endif等

d、删除所有的注释

e、添加行号和文件名标识,以便产生错误时给出提示信息

2)编译(生成.s文件)

编译器gcc把预处理后的文件进行语法分析、语义分析以及优化后生成汇编代码文件

执行的命令:gcc -S hello.i -o hello.s

3)汇编(生成.o文件)

汇编器把汇编代码文件转换成中间目标文件

执行的命令:gcc -c hello.s -o hello.o (注意:这里是小写的-c,而不是大写的-C)

4)链接(生成可执行文件)

链接器ld把目标文件与所需要的所有的附加的目标文件(如静态链接库、动态链接库)链接起来成为可执行的文件

执行的命令:gcc hello.o -o hello

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值