linux学习笔记[华电](3)——GCC

本文介绍了GCC编译器的基础使用,包括如何使用gcc命令编译链接C程序,-O选项的不同级别优化对程序性能的影响,-g选项用于生成调试信息,-I选项指定头文件搜索路径,以及-E、-S、-c等选项的作用。通过实例展示了GCC编译过程中的各个步骤,帮助读者更好地理解和掌握GCC的使用。
摘要由CSDN通过智能技术生成

GCC(GNU Compiler Collection)

gcc是一种跨平台的编译器,学会gcc的一些知识,g++也就很容易上手了,操作也都差不多。
不知道打过蓝桥杯的小伙伴有没有注意过官方提供的编译环境,如图。
在这里插入图片描述
可以看到,C语言程序就是用gcc来编译链接的。


gcc命令

之前写好了一个hello.c的源文件。
在这里插入图片描述

gcc -o

接下来我们用一条最简单的gcc命令编译链接执行一下,发现结果正确。

gcc -o hello hello.c
./hello

在这里插入图片描述

-O

-O选项是在编译链接过程中进行优化的,主要有以下选项。

gcc –O0 –o hello hello.c
gcc –O1 –o hello hello.c
gcc –O2 –o hello hello.c
gcc –O3 –o hello hello.c

吸口氧气这题就过了。

相信在洛谷上刷过题的小伙伴们都知道这个梗了吧。解释一下,有一些题TLE了,然后在不修改源代码的情况下开启O2优化,就能很玄学的AC了。O2–>O2–>氧气,突然有点冷。。。
不过99%的TLE都不是开O2能解决的问题,必须要降低时间复杂度才行,这都是题外话了。
至少也证明了一点,O2确实可以使程序更快。

man gcc
/-O

O0是什么优化选项都不开,O1是打开一些,O2,O3以此类推。

顺便提一句,Os是用来缩小程序尺寸的。

在这里插入图片描述
在这里插入图片描述

-g

产生gdb所必要的符号信息。

gcc -g -o hellog hello.c

在这里插入图片描述
在这里插入图片描述

-I

假如说一个工程的代码分散在2个源文件和1个头文件中,其中一个源文件引用了一个头文件,那么编译的时候为了不报错,一种最简单的方法就是把源文件和头文件都放在同一目录下。
但是,老师说,这样放在一起是很危险的。头文件最好单独放在一个文件夹中。

那么链接的时候,就不能单纯只把源文件放在-o命令后面了,因此就引出了-I选项。

gcc –I./inc –o hello2 hello2main.c hello2function.c

-I选项就是说在找不到.h文件的时候,去后面的路径里找。

-E

这个选项是用来查看预处理的结果的。

gcc -E hello.c | less

在这里插入图片描述

-S

查看汇编代码文件。

gcc –S hello.c

注意,这个汇编代码不是asm而是一种叫GAS的语言。

-c

这个选项是用来编译源文件的。

gcc -c hello.c
gcc -o hello hello.o
ls -l *.o
file hello
ldd hello

在这里插入图片描述

总结

gcc的最基本的一些选项就介绍到这里了,下一节是make。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值