Unix操作系统中,cc命令还提供了其他许多有用的命令行选项。借助于这些选项我们可以对编译过程进行进一步的控制,如使cc只完成某些阶段的编译工作,指定对头文件的搜索目录,指定对代码进行优化,指定在代码中加入一些供调试程序所用的信息,等等。下面我们分别讨论这些问题。
1.Unix操作系统仅生成目标文件
如果只想生成源文件的目标代码而不对这些代码进行链接,可以在cc命令行中加上-C选项。此时编译系将只生成与各源文件相对应的.o文件(目标文件)。
如:
$ cc -c myprog.c myfunc.s
将生成同myprog.c和myfunc.s相对应的目标文件myprog.o和myfunc.o。
2.Unix操作系统头文件搜索路径
当用户在C源程序中用# include指令包含了某个头文件时,根据文件名指定方法的不同,C编译系统将在不同的目录下去寻找指定的头文件:
在用尖括号(<>;)指定头文件名时,预处理程序将在Unix操作系统中存放头文件的标准位置(通常是/usr/include目录)寻找指定的头文件。
在用双引号(“”)指定投文件名时,预处理程序将先在Unix操作系统包含此头文件的C源程序所在的目录中(一般为当前目录),去查找该头文件。找不到时再到标准目录下去查找。在对于那些头文件既不在标准位置,又不在与C源程序同一目录时的情况怎么办呢?
为此,CC命令提供了-I(Include)选项,以供用户自己指定头文件所在地目录。例如,对于myfunc.c和myprog.c中所包含的头文件myprog.h,我们假定其后来被放在目录$HOME/include目录下,而这两个C文件则被放在$HOME/cfile目录下。此时在$HOME/cfile目录下对这两个C文件进行编译时,可使用如下命令:
$ cc -I #HOME/include myprog.c myfunc.c
此时对于这两个C文件中的#include "myprog.h",预处理程序将先在$HOME/cfile目录下,然后再$HOME/include目录下,***再Unix操作系统标准位置查找myprog.h。-I选项也能改变那些用尖括号(<>指定的头文件的搜索顺序,此时预编译程序将首先在-I指定的目录下,然后才在标准位置搜索。
-I选项可以多次重复使用。这样我们将能够指定多个非标准的头文件目录。由于用汇编语言进行编程是一件效率比较低的工作,用此种方法可以预期将获得比较高的效率。
关于Unix操作系统的知识,这次,我们就讲解到这里了。希望大家能够好好的学习Unix操作系统的知识。
【编辑推荐】