欢迎来到天天文库
浏览记录
ID:27387037
大小:807.00 KB
页数:29页
时间:2018-12-03
《linux下的C程序编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1Linux下的C程序编程2主要内容GCC编译器GDB调试器3一、GCC编译器1、GCC是什么GCC(GNUCComplier)是符合ANSIC标准的多平台编译器。GCC通过后缀来区别输入文件的类型,集成C、C++、JAVA等多种语言编译器。cC语言源代码文件。h程序所包含的头文件。o编译后的目标文件。i已经预处理过的C源代码文件。s汇编语言源代码文件。S经过预编译的汇编语言源代码文件。C、cpp、.cc或.cxxC++源代码文件。ii己经预处理过的C++源代码文件。a由目标文件构成的档案库文件。通过文件后缀来判断文件类型,通过权限来判断文件是否可以运行42、GC
2、C工作流程如图所示。预处理编译汇编链接得到*.s得到*.o源程序*.c预处理器cpp编译器egcs汇编器as链接器ld可执行文件得到得到*.i5起步演示helloworldhello.c#includeintmain(void){printf(“helloworld!”);return0;}编译运行这段程序:gcchello.c–ohello./hello输出:helloworld!63、基本使用基本用法:gcc[options][filenames]options:编译器所需要的编译选项filename:要编译的文件名GCC有超过100个的
3、编译选项。选项的合理使用对编译调试程序有很大作用。只介绍其中最基本、最常用的参数-ooutput_filename:确定可执行文件的名称为output_filename.如果不给出这个选项,gcc就给出预设的可执行文件a.out7-c进行预处理、编译,产生目标代码,不连接成为可执行文件。编译器只是由输入的.c等源代码文件生成.o为后缀的的文件(一般应用程序开发用不到,内核开发中可以用到)-g产生符号调试工具(GNU的GDB)所必要的符号信息,要想对源代码进行调试,必须加入这个选项。-O告诉gcc进行基本优化,整个源代码会在编译、连接过程中进行优化处理-O2产生尽可
4、能小、快的代码,比-O跟好的优化编译、连接8#includeintmain(void){doublecounter;doubleresult;doubletemp;for(counter=0;counter<2000.0*2000.0*2000.0/20.0+2020;counter+=(5-1)/4){temp=counter/1979;result=counter;}printf(“resultis%lf”,result);return0;}9gccoptimize.c–ooptimizetime./optimizegcc–Ooptimi
5、ze.c–ooptimizetime./optimize对比两次执行的输出结果不难看出,程序的性能的确的到了很大幅度的改善10-w关闭所有警告,建议不要使用此项-Wall允许发出gcc能提供的所有有用的警告,也可以用-W(warning)来标记指定的警告11-E只进行预处理,结果输出到标准输出,除非用-o指定输出文件(一般指定文件后缀为.i)-S进行预处理、编译,产生汇编代码。输出的文件后缀默认为.s。-Idirname指定额外的头文件搜索路径dirname目录-Ldirname指定额外的函数库搜索路径dirname目录。12多个文件的编译vimain.c#inc
6、ludevoidchessboard();voidstair();main(){chessboard();stair();}vichessboard.c#includevoidchessboard(){inti,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",0xa1,0xf6);elseprintf("");printf("");}printf("");}vistair.c#includevoidstair(){inti,j
7、;for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",0xa1,0xf6);printf("");}printf("");}gccmain.cchessboard.cstair.c–oprngrap13常见错误语法错误:错误信息:文件source.c中第n行有语法错误(syntexerror)。头文件错误错误信息:找不到头文件head.h(cannotfindincludefilehead.h)。函数库错误错误信息:链接程序找不到所需的函数库。如:ld:-lm:Nosuchfileordirectory14二、
8、GDB调试
此文档下载收益归作者所有