gcc是目前使用最广泛的免费的编译器之一,最近想看看gcc的源码,学习一下编译的技术。也希望对此有兴趣的同道中人能多多指教。
要学习一个软件的源代码,最好是首先学习一下这个软件的使用,所以在这里就简单的学习一下gcc的使用。
gcc是一个基于命令行的软件,所以要使用gcc,就应该学习它的命令选项。下面做一个简单的介绍,具体的还应该好好实践,要不学多少都会忘J:
1. 全局选项,这可能是最常用的选项。Gcc的编译过程分为四个阶段:预处理,编译,汇编,连接。Gcc的选项可以分别进行这四个阶段,全局的选项就主要是控制这几个阶段的
-E:预处理之后停止
-c:汇编之后停止,产生obj文件,不进行连接。
-S:编译之后停止,产生.s文件,不进行汇编
-o:指定输出的文件名
-x language:指定编译的语言,而不是靠文件后缀来判断
-x none:不指定编译的语言,用文件名后缀来判断进行处理,这样可以从某个阶段开始
2.警告选项,这类选项可以控制gcc编译过程中产生什么级别的警告信息
-fsyntax-only:仅检查代码的语法错误
-W:机制所有的警告信息
-Wunused:对所有未使用的变量产生警告
3.调试选项,这类选项控制产生的文件,以供调试软件使用。注意,不使用这类选项,就不能用调试器调试产生的文件。
-g:这是最常用的选项(我常用J),产生的文件可以被gdb使用
-p:为分析程序prof产生附加的代码
4.优化选项,这类选项可以对代码进行优化
-o
-o0
-o1
-o2:这些都是优化级别
-fno-inline:忽略inline关键字
5.预编译选项,用来指定预编译时的选项。
这个我没有用过,呵呵,我还是很少编程的,所以也没有用过这些选项。大家自己看看吧。
暂时就这些吧,其它的我也不会了,慢慢学吧,我觉得能明白编译的几个阶段对学习源代码很重要,其它的再慢慢理解吧。要学习命令就看看它的手册吧。