什么是GCC? GCC编译过程

article/2025/10/24 16:02:58

什么是GCC?  最简单的回答就是Linux 下的C/C++ 编译器。

其实一开始的确是这样的,GCC 原名为GUN C 语言编译器( GNU C Compiler), 原本只能处理编译C语言。

但是后来GCC发展壮大了,可以编译C++, Fortran,Pascal,Objective-C, Java,Ada,Go以及各类处理器构架上的汇编语言,

后来它就改名叫GNU 编译器套件(GNU Compiler Collection), 虽然改了名,但是简称还是GCC,这就是现在的GCC了。

归纳下:GCC 是一个编译器套件,可以编译好多种语言。

 

我这里主要就是学习GCC 编译器种的一种,对C/C++ 代码的编译。

一般Linux 操作系统默认都安装了GCC。打开终端窗口输入: gcc -v  就可查看GCC编译器套件的信息。

先写个Hello World 出来,创建一个hello.c 文件,内容如下

#include<stdio.h>

int main(void){

    printf("Hello, GCC!\n");

    return 0;

}

编译命令为: gcc hello.c -o hello   (也可以简写为 gcc hello.c)

编译成功后,就会生成一个可执行的文件hello

终端里面输入命令:./hello   即可以看到执行的结果了("Hello, GCC!")。

 

2: 编译hello.c ,就只用了一条命令,但实际上,看似很简单的这一步操作,却隐藏了he你多操心细节。GCC的编译过程是相当复杂的。

         gcc hello.c -o hello  这一条命令,就干了上面那多事。如果不嫌麻烦,我们也可以一步一步来编译。

1:预处理。  命令:gcc -E hello.c -o hello.i   即可得到 预处理后的文件hello.i (其实还是C代码文件), 有兴趣的可以用 cat hello.i 看看里面内容。

2:编译。命令:gcc -S hello.i    就是把上面的hello.i 文件,编译为汇编语言。懂ASM的人,可以去看。

3:汇编。命令:gcc -c hello.s 。把hello.i 这个汇编文件编译成机器码,将会得到hello.o 文件。

4: 链接。命令:gcc hello.o  尽管3得到了机器码,但是文件却还是不可以运行,必须要经过链接才能运行。

总结下: 预处理就是预处理就是处理引入的头文件,定义的宏等。 “编译”就是把C/C++代码编译成汇编语言。“汇编”就是把汇编代码编译成机器码。最后“链接”生成可以执行的机器码。

 


http://chatgpt.dhexx.cn/article/uLCxgdWQ.shtml

相关文章

GCC是什么

GCC是什么 说到 GCC&#xff0c;就不得不提 GNU&#xff0c;“GNU”是“GNUs Not Unix!”&#xff08;GNU并非Unix&#xff01;&#xff09;的首字母递归缩写&#xff0c;中文名“革奴计划”。GNU 计划的最终目标是打造出一套完全自由&#xff08;即自由使用、自由更改、自由发…

GCC简介

一. GCC简介 GCC&#xff08;GNU C Compiler&#xff09;原名GNU C语言编译器&#xff0c;是由GNU开发的编程语言译器&#xff0c;只能处理C语言。但其很快扩展&#xff0c;变得可处理C&#xff0c;后来又扩展为能够支持更多编程语言&#xff0c;如Fortran、Pascal、Objective…

一张图学会python递归函数

递归函数属于那种“难者不会&#xff0c;会者不难”的事情&#xff0c;回想自己大学时学习递归函数的经历&#xff0c;简直是痛不欲生&#xff0c;代码里没有一行是看不懂的&#xff0c;但就是理解不了它是怎样运行的。 等到自己悟通了原理&#xff0c;就又会觉得这东西太简单了…

【Python递归练习】

1.出售金鱼问题第一次卖出全部金鱼的一半加二分之一条金鱼&#xff1b;第二次卖出乘余金鱼的三分之一加三分之一条金鱼&#xff1b;第三次卖出剩余金鱼的四分之一加四分之一条金鱼&#xff1b;第四次卖出剩余金鱼的五分之一加五分之一条金鱼&#xff1b;现在还剩下11条金鱼。问…

python 递归函数详解

在 python中&#xff0c;有一种非常神奇的函数&#xff1a;递归函数&#xff0c;它可以让你的程序实现自顶向下的递归调用&#xff0c;从而实现程序的无限循环。这是一种非常神奇的语言&#xff0c;可以让你使用一种语言实现另一种语言。它还有一个很酷的名字&#xff1a; shel…

python函数递归求和详解_Python递归函数详细分析

什么是递归? 递归,就是在函数运行中自己调用自己 代码示例: def recursion(n): # 定义递归函数 print(n) # 打印n recursion(n1) # 在函数的运行种调用递归 recursion(1) # 调用函数 这个函数在不断的自己调用自己,每次调用n1,看下运行结果: 1 2 ..... 998Tracebac…

Python递归思想与代码实现

1&#xff0c; 递归思想 递归算法:递归(Recursion)&#xff0c;在数学与计算机科学中&#xff0c;是指在函数的定义中使用函数自身的方法。 这是官方的解释&#xff0c;翻译成人话就是&#xff1a; 函数内部自己调用自己函数必须有出口 函数自己调用自己很好理解&#xff0c…

python函数递归调用时对深度没有限制_python递归深度

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 今天在写爬虫的时候,发现了一个事情,使用str方法强制转换一个beautifulsoup对象成字符串的时候报错了,提示是“maximum recursion depth exceeded while cal…

python递归函数详解

python递归函数是指一个函数从一个状态开始&#xff0c;然后返回另一个状态。递归函数是在实现过程中遇到的最基本的一类函数。比如&#xff0c; int i0; int j0; int c1;等等都是一类递归函数&#xff0c;但是我们知道&#xff0c;它们在实现过程中需要执行多次&#xff0c;并…

Python 递归的优化

文章目录 前言一、递归实现斐波那契二、优化后的斐波那契总结 前言 递归&#xff0c;很常见的一种算法&#xff0c;在初学的时候我们都会用递归来解决斐波那契数列&#xff0c;但递归本身有非常大的缺陷&#xff0c;就是时间和空间占用都非常大&#xff0c;在进阶学习后&#…

Python 递归实现乘法

Python定义函数:使用递归求乘积&#xff08;x*y&#xff09; 1 当作x个y相加或者y个x相加 2 当其中一数&#xff08;以x为例&#xff09;不为1时&#xff0c;返回y加上该函数&#xff0c;同时每次x-1&#xff0c;直至x1为止&#xff0c;此过程实现了x个y相加 具体代码如下:

python递归遍历查询文件 文件夹

文章目录 &#x1f357;先看运行效果&#x1f354; 具体思路&#x1f35f; 一、主要使用的模块以及方法&#x1f32d; 二、主要思路以及代码&#x1f37f; 1、开始位置&#x1f9c2; 2、关键位置&#x1f953; 3、结果输出 &#x1f9c7; 完整源码&#x1f95e; 结尾&#x1f9…

轻松搞懂Python递归函数的原理与应用

递归: 在函数的定义中&#xff0c;函数内部的语句调用函数本身。 1、递归的原理 学习任何计算机语言过程中&#xff0c;“递归”一直是所有人心中的疼。不知你是否听过这个冷笑话&#xff1a;“一个面包&#xff0c;走着走着饿了&#xff0c;于是就把自己吃了”。 常理推断&…

python递归如何理解

最近在做递归一些相关的东西&#xff0c;发现递归入门很容易&#xff0c;但要具体了解其实现过程&#xff0c;比较难以理解&#xff0c;在这里将自己这几天的摸索记录一下&#xff0c;写知乎的主要目的是为了给自己做笔记&#xff0c;在做笔记的同时&#xff0c;帮助后来人少走…

【Python函数的递归】

递归的定义 函数作为一种代码封装&#xff0c;可以被其他程序调用&#xff0c;当然&#xff0c;也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。就像一个人站在装满镜子的房间中&#xff0c;看到的影像就是递归的结果。递归在数学和计算机应用上非常强大…

H3C 交换机S5130S软件版本升级

1.通过官网下载软件包 升级的包名为 S5130S_HI-CMW710-R6330.ipe 2. 查看FLASH空间是否足够 <H3C>dir /all Free的空间需要是软件包的2倍大小&#xff0c;例如S5130S_HI-CMW710-R6330.ipe软件包大小为54MB&#xff0c;那么交换机Free的空间需要108M。 空间如果…

H3C 交换机S6520X软件版本升级

1.通过官网下载软件包 升级的包名为 S6520X-CMW710-R6312P02.zip 压缩包里有很多特性包&#xff0c;我们目前就使用 S6520X-CMW710-R6312P02.ipe 2. 查看FLASH空间是否足够 <H3C>dir /all Free的空间需要是软件包的2倍大小&#xff0c;例如S6520X-CMW710-R6312P0…

H3c服务器升级硬盘固件,H3C交换机升级固件版本

二、进入产品支持与服务&#xff0c;找到适配的交换机固件进行下载 三、下载时要求提供用户名密码 用户名&#xff1a;yx800 密码&#xff1a;01230123 四、H3C官方升级说明案例 1.1 实验拓扑(假设SW1上 VLAN 1 的虚地址为10.10.10.1&#xff0c;PC配置同网段地址10.10.10.…

博途V16 更改PLC的型号和固件版本

在线访问&#xff0c;查看硬件PLC的固件版本。 右键&#xff0c;选择更改设备。 选择PLC型号和版本号。

TIA博途_如何更新程序中的指令版本和CPU固件版本?

TIA博途_如何更新程序中的指令版本和CPU固件版本? TIA博途STEP7从V14SP1版本增加新功能:“更新程序”,可以将当前CPU中的程序版本更新至能够使用的最高版本,对于通讯、运动控制等版本经常升级的程序非常适用, 以下进行举例说明: TIA博途STEP7 V13 SP1中组态S7-1200 V4.1版…