gcc编译器

GCC编译C程序涉及预处理、编译、汇编和链接四个步骤,生成可执行文件。预处理处理头文件和宏,编译生成汇编代码,汇编转为目标文件,链接阶段合并目标文件与库生成最终可执行文件。在Ubuntu中,通过`sudo apt-get install build-essential`即可安装GCC。错误分析包括编译期的语法错误、链接期的调用错误和运行期的系统或数据错误。多文件编译可一次性或逐个编译后再链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跳转文尾

gcc编译过程

gcc在编译一个c 语言程序时,需要经历 预处理、编译、汇编、连接四个过程,生成一个可执行文件。完成整个编译还需要运行,下面依次介绍:
详尽简略两种方式展示打印helloworld.c的gcc命令过程
各时期错误分析多文件编译方式ubuntu下gcc的的安装

一、详尽版如下

1、预处理阶段

在预处理过程中,编译器会对源代码的头文件和预处理语句进行分析,将当中的预处理指令替换为对应的内容

2、编译阶段

将预处理后的文件转换成对应的汇编文件此时会生成个.s结尾的汇编文件

3、汇编阶段

将汇编文件转换为目标文件(二进制码文件)此时会生成个.o结尾的目标文件

4、链接阶段

将进一步生成的目标文件和系统的库(静态库或动态库)文件合并生成为 可执行文件gcc源文件或前步生成的多个目标文件
-般来说,在这一步是系统当中的链接器进行操作的,只不过gcc当中融合链接器

5、运行阶段

链接下生成自定义可执行文件action
目录下的可执行文件的方式- 般如果是当前目录./
否则会将其当做系统指令运行
即执行命令格式:./可执行文件

6、命令展示(源文件为code.c)

在这里插入图片描述

二、简略版

方式一:
1、编译链接 :gcc -o ./文件 ./源文件
2、运行:./文件
3、命令:在这里插入图片描述

方式二:
1、编译链接 :gcc 源文件
2、运行:./a.out 系统默认可执行文件为a.out
3、命令:

三、错误分析

编译期出的错误,- 般为C语言语法性的错误

链接期的错误,- 般为找不到实际调用的错误

运行期错误

(1) 会导致程序奔溃的错误一般是由于不符合系统处理的错误
(2) 数据型错误

四、多文件编译

两个源文件为:test_one.c test_two.c
基本上有两种编译方法:
1、多个文件一起编译
gcc test_one.c test_two.c -o test

2、分别编译各个源文件,之后对编译后输出的目标文件链接
gcc -c test_one.c
gcc -c test_two.c
gcc -o test_one.o test_two.o -o test

比较:第一中方法编译时需要所有文件重新编译;第二种需要重新编译修改的文件,未修改的不用重新编译

五、gcc在ubuntu中安装

在Windows装gcc比较麻烦,还可能安装不上,在Ubuntu只需要一条命令就可以完美安装
方法一:
sudo apt-get build-depgcc

方法二:
sudo apt-get install build-essential

查看安装完版本执行命令
gcc --version

gcc编译过程

gcc在编译一个c 语言程序时,需要经历 预处理、编译、汇编、连接四个过程,生成一个可执行文件。完成整个编译还需要运行,下面依次介绍:
详尽与简略两种方式展示打印helloworld.c的gcc命令过程
各时期错误分析,
多文件编译方式,
ubuntu下gcc的的安装
一、详尽版如下

1、预处理阶段, 在预处理过程中,编译器会对源代码的头文件和预处理语句进行分析,将当中的预处理指令替换为对应的内容

2、编译阶段 将预处理后的文件转换成对应的汇编文件此时会生成个.s结尾的汇编文件

3、汇编阶段 将汇编文件转换为目标文件(二进制码文件)此时会生成个.o结尾的目标文件

4、链接阶段 将进一步生成的目标文件和系统的库(静态库或动态库)文件合并生成为 可执行文件gcc源文件或前步生成的多个目标文件
-般来说,在这一步是系统当中的链接器进行操作的,只不过gcc当中融合链接器
5、运行阶段
链接下生成自定义可执行文件action
目录下的可执行文件的方式- 般如果是当前目录./
否则会将其当做系统指令运行
即执行命令格式:./可执行文件
6、命令展示(源文件为code.c)
在这里插入图片描述
二、简略版
方式一:
1、编译链接 :gcc -o ./文件 ./源文件
2、运行:./文件
3、命令:在这里插入图片描述

方式二:
1、编译链接 :gcc 源文件
2、运行:./a.out 系统默认可执行文件为a.out
3、命令:

** 三、错误分析**

编译期出的错误,- 般为C语言语法性的错误

链接期的错误,- 般为找不到实际调用的错误

运行期错误

(1) 会导致程序奔溃的错误一般是由于不符合系统处理的错误
(2) 数据型错误

四、多文件编译
两个源文件为:test_one.c test_two.c
基本上有两种编译方法:
1、多个文件一起编译
gcc test_one.c test_two.c -o test

2、分别编译各个源文件,之后对编译后输出的目标文件链接
gcc -c test_one.c
gcc -c test_two.c
gcc -o test_one.o test_two.o -o test

比较:第一中方法编译时需要所有文件重新编译;第二种需要重新编译修改的文件,未修改的不用重新编译
五、gcc在ubuntu中安装
在Windows装gcc比较麻烦,还可能安装不上,在Ubuntu只需要一条命令就可以完美安装
方法一:
sudo apt-get build-depgcc

方法二:
sudo apt-get install build-essential

查看安装完版本执行命令
gcc --version

输出如下:
gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)
Copyright©2007FreeSoftwareFoundation,Inc.
安装成功!
跳转文首

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值