我们知道Unix操作系统中,cc命令还提供了其他许多有用的命令行选项。借助于这些选项我们可以对编译过程进行进一步的控制,如使cc只完成某些阶段的编译工作,指定对头文件的搜索目录,指定对代码进行优化,指定在代码中加入一些供调试程序所用的信息,等等。下面我们分别讨论这些问题。
1.在Unix操作系统目标文件中加入调试用的信息
除非是那种特别简单的程序,一般大多数程序都会有这样或那样的问题。为了能够使用Unix操作系统的符号调试程序(sdb,下一章回具体介绍)对程序进行调试,必须在目标代码中加入一些有关的程序变量和语句信息,以便sdb能够跟踪函数调用、显示变量的值以及设置断点,等等。
在cc命令行中加入-g选项将能够实现上述要求,如:
$ cc -g -o myprog myprog.c myfunc.c
这样生成的myprog就可以用sdb进行调试了。
2.Unix操作系统优化处理
优化的含义前面我们已经讲过,这里不想再重复。我们要说明的是在程序的调试过程中用不着进行优化处理。优化只应对最终提交的可执行程序进行。
在CC命令行中加上-O选项可以使编译系统对代码进行优化:
$ cc -O -o myprog myprog.c myfunc.c
优化对于不同的程序效果可能是不同的。有些程序优化不优化都不会有什么区别。在有些Unix操作系统上(如Sun OS),对程序的优化可以分成不同的级别(一般是1至4级)。
***级优化是仅在汇编级上优化,这是大多数Unix操作系统都会做得。第二级优化是全局优化,如循环优化、公共子表达式的消除、复写传播及自动寄存器的分配。第三级上的优化再加上对外部变量的用法和定义的优化。第四级优化则在第三级基础上对指针赋值得效果进行跟踪。程序员可在-O后面加上一个数字(1,2,3,4)来表示所希望的优化级别。
在Unix操作系统cc命令行中还可以使用其他的许多选项,我们将介绍同链接有关的一些选项,其他选项的使用请参阅联机帮助。或者使用手册。
【编辑推荐】