欢迎来到天天文库
浏览记录
ID:6151146
大小:101.50 KB
页数:17页
时间:2018-01-04
《unix下c程序的编译与调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言编程培训教程——第三章UNIX下C程序的编译与调试三、UNIX下C程序的编译与调试3.1CC编译器我们用cc来编译生成目标文件,或者生成可执行文件。其实cc可以生成包括.o目标文件、.i预处理文件等在内的中间过程文件。中间过程文件可以由后缀指出其类型:.c:C源文件。默认处理过程是预处理、编译、汇编。.C:C++源文件。默认处理过程是预处理、编译、汇编。.cc:C++源文件。默认处理过程是预处理、编译、汇编。.cxx:C++源文件。默认处理过程是预处理、编译、汇编。.m:Objective-C源文件。默认处理过程是预处理、编译、汇编。.i:经过预处理的C文件。默认处理过程是编译、汇编
2、。.ii:经过预处理的C++文件。默认处理过程是编译、汇编。.s:汇编器的源文件。默认处理过程是汇编。.S:汇编器的源文件。默认处理过程是预处理、汇编。.h:预处理器需要的头文件。一般不出现在命令行上。其他后缀的文件将送给连接器(linker)。一般包括:.o:目标文件。.a:归档文件(库文件)。链接过程是上面处理过程的最后一步,除非指定了-c、-S或-E任选项。一般cc的命令格式如下:cc[option
3、filename]每个任选项由“-”开头,每个任选项分开使用。例如:任选项-dr与任选项-d-r完全不同。下面看一些常用的任选项:-c只编译不连接,生成.o文件。编译器对每个源文件输出与
4、该文件相符的目标文件。常常用于编译不包含主程序的子程序文件。-ooutputfile指定输出文件的名字outputfile。不管指定名字的文件是一个可执行文件、目标文件、汇编文件还是预处理文件。缺省的输出可执行文件是a.out。如果使用了-c参数,则缺省的输出文件为将源程序文件名的后缀改为.o。-g在编译时产生额外的符号表(调试信息),同时将选项-lg传给连接程序(ld)以使它连接g库(/usr/lib/libg.a),从而使程序可用dbx调试。-Ipathname在搜索include文件的目录列表中增加新的目录。除非源程序中指定了绝对路径,否则cc在编译时将先后在源程序所在的路径、由-I
5、指定的路径和缺省路径/usr/include中寻找源程序中#include的文件。-llibrary连接指定的函数库。比如用-lm连接数学库。被连接的库将是库函数路东大阿尔派电信事业部曾波2000年7月22日第17页C语言编程培训教程——第三章UNIX下C程序的编译与调试径中的lib**.so或lib**.a,其中**为-l后的字符串。-Ldirectory在缺省的库函数路径(usr/lib)外增加另外的库函数寻找路径。-temp=directory指定编译连接时采用目录directory作为存放临时文件的路径。如不指定,则临时路径为/tmp,当/tmp较小或已经较满时可能无法编译较大的程
6、序,此时需指定temp路径。-w在编译时不列出警告信息。-W显示额外的警告消息。-O优化执行代码,有的编译器还可以通过指定-O1、-O2、-O3等来指定优化的程度。-S在编译步骤后停止,不进行汇编。输出的是一个可由汇编器(assembler)汇编的文件。一般情况生成的可汇编文件名由源文件(文件名后缀为“.c”、“I”等)的更改为.s为后缀的文件。-E在预处理后停止,不进行编译。输出文件是预处理过的代码,并送往标准输出。-v在标准错误输出上显示编译器执行各步骤的命令。也显示版本信息。-I-在-I-任选项之前由-I指定的任何目录只用来搜索#include“头文件名”,而不用来搜索#includ
7、e<头文件名>。命令行中-I-后的-I任选项指出的目录可以用来搜索所有#include包含的头文件。-Dmacro定义宏macro,宏macro的值为字符串“1”。-Dmacro=defn定义宏macro,其值为defn。所有命令行上的-D任选项在-U任选项之前处理。-Umacro取消宏macro的定义。该任选项在-D任选项之后处理,但在-include任选项和-imarcos任选项之前处理。-static当系统支持共享库链接时,才支持该任选项。该任选项阻止链接器链接共享库。-shared产生一个可共享的目标,其他目标文件链接该目标形成可执行文件。举例:1、如果所有程序都在一个文件mypr
8、og.c中,那么只需用ccmyprog.c即可完成编译连接的全过程,所生成的执行文件是a.out。2、如果源程序由两个文件mymain.c和mysubs.c组成,程序中使用了系统的数学库,我们希望生成的执行文件叫myprog,则编译连接的命令为:ccmymain.cmysubs.c–lm–omyprog东大阿尔派电信事业部曾波2000年7月22日第17页C语言编程培训教程——第三章UNIX下C程序的编译与调试3.2dbx
此文档下载收益归作者所有