1.GCC学习总结:
gcc选项优化:
含义:
gcc可以对代码进行优化,他通过编译选项-On来控制优化代码的生成,n可以看做是一个代表优化级别的变量。并且在不同版本的gcc中,n的值及其对应的优化效果可能不完全相同。
gcc的命令
-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。
分别编译各个源文件,之后对编译后输出的目标文件链接。
gcc -c testfun.c #将testfun.c编译成testfun.o
gcc -c test.c #将test.c编译成test.o
gcc -o testfun.o test.o -o test #将testfun.o和test.o链接成test
2.多源文件的编译方法
如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为test.c和testfun.c]
-
多个文件一起编译
用法:#gcc testfun.c test.c -o test
作用:将testfun.c和test.c分别编译后链接成test可执行文件。 -
分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:
gcc -c testfun.c //将testfun.c编译成testfun.o
gcc -c test.c //将test.c编译成test.o
gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test
以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。
3.本周学习总结
本周通过学习了GCC更加深刻的熟悉了Linux的vim操作以及了解到关于GCC的一些知识,例如GCC官方的定义是:GNU Complier Collection,而不是我们常说的GNU C Complier。所以GCC现在除了支持C外还支持C++/Java/Fortran等语言。GCC其实只是编译系统的驱动程序,通过它来解析不同输入参数,并依次调用预处理器(cpp),编译器(cc1/cc1plus),汇编器(as),链接器(ld)生成一个可执行文件的过程等等。总之,收获很大!