gcc编译器学习笔记

gcc:一个跨平台的大型编译器,将高级语言编译成机器码。

创始人:理查德斯托曼

目录

1.指定编译生成文件名

2.gcc编译步骤

3.gcc编译多个文件

4.gcc编译优化


1.指定编译生成文件名

//gcc编译产物默认名为a.out,每一次编译结束后都会生成	a.out,但是只会保存最新的那个。如果想要保存某个编译后的可执行文件,我们可以指定生成名以达到保存的目的。
//改名的方法有两种	-o
1)gcc -o 指定生成的名 需要编译的文件
	gcc -o world world.c
2)gcc 需要编译的文件  -o  指定生成的名
	gcc hello.c -o hello 

2.gcc编译步骤

(1)预处理 1.将头文件的内容原封不动复制粘贴过来 2.将所有宏定义替换 3.将所有注释信息全部删除

(2)编译 将编写的高级语言编译成汇编语言

(3)汇编

将汇编程序编译生成计算机能识别的机器码

(4)连接

将多个.o和库文件连接在一起生成最终可执行产物。

//(1)-E 让编译停留在预处理阶段 
gcc -E -o test.i test.c	
//-o 改名
//预处理阶段参物,后缀是.i
    
// (2)-S(大写)让编译停留在编译这一步
gcc -S -o test.s test.c
//编译产物后缀.s
    
//(3)-c(小写)让编译停留在汇编这一步
gcc -c -o test.o test.c
//汇编产物后缀.o
//因为这个编译产物用的比较多,可以简写成:
gcc -c test.c	//也能生成 test.o文件
    
//(4)让编译停留在连接这一步
gcc test.c //a.out
    
//在上一步的基础上进行编译,将.o编译成可执行二进制文件
 gcc -o test test.o

头文件九百多行,但是复制粘贴后只有不到七百行,说明头文件的注释也被删除了。也可以很清晰的看到所有的宏定义也确实被替换了

3.gcc编译多个文件

正常编写相对大型的项目需要按功能划分成多个文件编写,但是无论有多少个文件,只能有一个main函数

gcc -o cal main.c add.c sub mul.c	//联合编译
    
//也可组个编译成.o文件后,用.o文件产生可执行文件。保留中间产物。下面几个.c文件都要自己写
gcc -c main.c
gcc -c add.c
gcc -c sub.c
gcc -c mul.c
gcc -o cla2 mian.o add.o sub.o mul.o

小贴士:

在编写多个相似的文件是,可以按下“Esc”键退出插入模式,输入vsp 文件名即可分屏操作。通过分屏操作可以实现跨文件复制粘贴。

 

gcc hello.c -Wall // 把所有警告信息输出。因为有些警告不会显示。

错误等级为err的不会产生a.out文件

错误等级为warning的,依旧会产a.out文件

gcc hello.c -w	//隐藏所有警告

4.gcc编译优化

gcc可以对我们写出的垃圾代码进行优化

-o1//目的再不影响编译速度的前提下,尽量采用一些优化算法降低代码大小和可执行代码的速度
-o2	Linux程序员一般用-o2优化
-o3 优化等级最高
可以使用time命令计算程序运行时间
gcc laji.c
time ./a.out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值