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
4万+

被折叠的 条评论
为什么被折叠?



