欢迎来到天天文库
浏览记录
ID:51595290
大小:266.00 KB
页数:25页
时间:2020-03-25
《Linux操作系统-总复习-第十二章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux操作系统总复习主要内容:12.1gcc简介12.2gcc编译器的用法和执行过程12.3makefile的结构12.4gdb调试程序12.5小结第十二章Linux基本编程12.1gcc简介gcc简介Linux系统下的gcc(GNUCCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。gcc的执行过程虽然我们称gcc是C语言的编译器,但使用gcc由
2、C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking)Gcc编译器能将C、C++语言源程序编译成目标程序,然后将目标程序链接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介
3、绍gcc所遵循的部分约定规则。gcc可以根据文件扩展名执行操作gcc文件扩展名规范扩展名类型可进行的操作方式.cc语言源程序预处理、编译、汇编、链接.C,.cc,.cp,.cpp,.c++,.cxxc++语言源程序预处理、编译、汇编、链接.i预处理后的c语言源程序编译、汇编、链接.s预处理后的汇编程序汇编、链接.h头文件不进行任何操作.o目标文件链接12.2gcc的用法在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就
4、用不到,这里只介绍其中最基本、最常用的参数。基本使用格式$gcc[选项]<文件名>gcc常用选项选项含义-ofile将经过gcc处理过的结果存为文件file,这个结果文件可能是预处理文件、汇编文件、目标文件或者最终的可执行文件。假设被处理的源文件为source.suffix,如果这个选项被省略了,那么生成的可执行文件默认名称为a.out;目标文件默认名为source.o;汇编文件默认名为source.s;生成的预处理文件则发送到标准输出设备。基本使用格式$gcc[选项]<文件名>gcc常用选项选项含义-
5、c仅对源文件进行编译,不链接生成可执行文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项。-g[gdb]在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入gdb扩展的调试信息,方便使用gdb来进行调试gcc常用选项选项含义-Idir在编译源程序时增加一个搜索头文件的额外目录——dir,即include增加一个搜索的额外目录。-w禁止所有警告-Wwarning允许产生warning类型的警告,warning可以是:main、unused等很多取值,最常用是-Wal
6、l,表示产生所有警告。如果warning取值为error,其含义是将所有警告作为错误(error),即出现警告就停止编译。编译单个文件文件清单:my_app1.c#include#defineN10voidgreeting(char*name);intmain(void){charname[N];printf("YourName,Please:");scanf("%s",name);greeting(name);return0;}voidgreeting(char*name){Prin
7、tf(“Hello%s!r“,name);}编译这个文件:gccmy_app1.c-omyapp1执行生成的可执行文件:#./myapp1YourName,Please:nihaoHellonihao!文件清单greeting.h#ifndef_GREETING_H#define_GREETING_Hvoidgreeting(char*name);#endifgreeting.c#include#include"greeting.h"voidgreeting(char*name)
8、{printf("Hello%s!r",name);}my_app.c#include#include"greeting.h"#defineN10intmain(void){charname[N];printf("YourName,Please:");scanf("%s",name);greeting(name);return0;}编译多个文件编译多个文件目录结构(1)编译命令$gccmy_app.cgreeting
此文档下载收益归作者所有