unix下c程序的编译与调试

unix下c程序的编译与调试

ID:6151146

大小:101.50 KB

页数:17页

时间:2018-01-04

unix下c程序的编译与调试_第1页
unix下c程序的编译与调试_第2页
unix下c程序的编译与调试_第3页
unix下c程序的编译与调试_第4页
unix下c程序的编译与调试_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。