Linux操作系统笔记——GCC编译器

简介: Linux操作系统笔记——GCC编译器

一、GCC编译器概念


GCC编译器是GNU编译器的套件,它是Linux操作系统中最常用的编译器之一,是用于编程开发的编译器,并支持多种编程语言,例如支持c/c++语言,还有java、go语言等等。


二、GCC支持的文件类型


GCC支持的常见文件类型有以下:

扩展名 说明
.c C源程序
.C/.cc C++源程序
.a 库文件
.h 头文件
.i 经过预处理的C程序
.ii 经过预处理的C++程序
.o 编译后的目标程序


三、GCC编译过程


image.pngimage.pngimage.png

image.png

(一)预编译


首先GCC编译器通过预编译,读取源程序,对头文件、预编译语句和一些特殊符号进行分析和处理,可以通过在gcc命令后跟参数-E,即可完成对代码的预编译,如下预编译一个名称为hello.c的C源程序:

gcc -E hello.c  //预编译


hello.c文件内容如下:

#include <stdio.h>
int main(){
  printf("Hello Linux!\n");
  return 0;
}


执行命令后:

1667232377107.jpg


[yyx@localhost ~]$ vi hello.c
[yyx@localhost ~]$ gcc -E hello.c

1667232417992.jpg

将预编译的结果保存在hello.i文件中,可以在后跟参数-o,确定输出文件的名称,执行以下命令:

gcc -E hello.c -o hello.i


(二)编译


编译的作用是检查代码的语法和将无误的预编译后的文件转换为汇编语言,并自动一个生成扩展名为.s的文件,即可完成对代码的编译,如下编译一个名称为hello.c的C源程序,后跟参数-S,表示进行编译但不汇编,生成汇编代码:

gcc -S hello.c


在Linux终端输入命令:

1667232438087.jpg


(三)汇编


汇编是将汇编代码转为目标代码,其参数是-c,它会自动生成一个扩展名为.o的目标程序,即只编译汇编,而不连接生成可执行文件,如下:

gcc -c hello.c


(四)连接


连接的功能是连接目标代码,并生成可执行文件,也是通过gcc命令,通过对hello.o或hello.c文件都可以进行连接,后跟参数-o,从而确定可执行文件的名称,如下:

gcc hello.c -o hello


执行下列命令:

[yyx@localhost ~]$ gcc hello.c -o hello
[yyx@localhost ~]$ ./hello


在Linux终端输入命令,得到程序的执行结果:

1667232482537.jpg


例子


例如,在Ubuntu中编写一个ch.c文件,其目的是从键盘输入一个字符,如果是大写字符,则输出它对应的小写字符;如果是小写字符,则输出它对应的大写字符。

首先,通过vi编辑器,执行vim ch.c:

linux@ubuntu:/mnt/hgfs/VMShare$ vim ch.c


在终端输入命令:

1667232508401.jpg

编写代码:

1667232521060.jpg

输出可执行文件,并执行:

1667232533360.jpg



相关文章
|
3月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
3月前
|
Ubuntu Unix Linux
操作系统的最强入门科普(Unix/Linux篇)
下期文章,小枣君会重点聊聊Windows和macOS那条线。敬请关注! 如果大家觉得文章不错,还请帮忙多多转发!谢谢!
|
3月前
|
监控 Ubuntu Linux
什么Linux,Linux内核及Linux操作系统
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
301 0
|
3月前
|
Unix 物联网 Linux
都什么年代了,你还不懂啥是Linux操作系统
至于华为鸿蒙操作系统是不是独树一帜,这个留给各位阅读本文的网友们来讨论
109 0
|
3月前
|
Web App开发 缓存 Rust
|
3月前
|
安全 Linux iOS开发
linux属于什么操作系统
Linux是一种自由和开放源代码的操作系统,具有高度的灵活性和可定制性。与常见的操作系统如Windows和macOS相比,Linux具有自由、安全和稳定等优势。Linux已广泛应用于服务器、桌面电脑、超级计算机和嵌入式设备等领域,并且在未来的发展前景广阔。由于其自由和开放源代码的特性,Linux还促进了计算机技术和社区的发展,为全球的计算机用户提供了更多的选择和可能性。
|
3月前
|
安全 Ubuntu Unix
关于Linux操作系统,你必须要知道的事
我们可以看到无论是Debian还是Buildroot都有各自的特点,为客户提供了更大的选择空间和灵活性,大家可以根据自己的需求选择合适的版本来满足终端用户的体验和功能需求。从平技术将会一直关注更多更安全、灵敏、易于开发的Linux版本,做好适配工作,不断为客户带来“简单开发、方便应用”的使用体验。
|
3月前
|
安全 Ubuntu Linux
如何安装Linux操作系统?
此时,您可以选择重新启动计算机,然后从硬盘上的Linux系统启动。以上是一个大致的安装过程。请注意,不同的Linux发行版可能会在细节上有所差异,因此在进行安装之前,请确保您阅读并理解了相应发行版的安装指南或文档。
|
3月前
|
Ubuntu Linux 开发者
Linux发行版比较:选择适合你的操作系统
在做出选择之前,建议您先在虚拟机或双系统环境中尝试不同的发行版,根据自己的体验和需求做出决策。选择适合自己的Linux发行版是一个个人化和主观的过程,最重要的是找到符合自己需求和喜好的发行版,让您在使用Linux系统时感到舒适和方便。
|
3月前
|
Ubuntu Unix Linux
玩机强化技能,动手安装Ubuntu Linux操作系统
(13)Ubuntu重启过程中,你将在关机画面中看到提示文字“Please remove the installation medium, then press ENTER:”,按下“Enter”键即可重启电脑。