第3章linux下C编程基础.ppt
《第3章linux下C编程基础.ppt》由会员分享,可在线阅读,更多相关《第3章linux下C编程基础.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 Linux下下C编程基础编程基础3.1 GCC程序编译3.2 GDB程序调试3.3 Makefile工程管理3.1 GCC程序编译程序编译oLinux系统下的gcc(GUN C Compiler)是GUN推出的功能强大、性能优越的多平台编译器,是GUN代表作之一。gcc可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%-30%。oGcc编译器能将C、C+语言源程序、汇编程序编译、链接成可执行文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。ogcc又是一个交叉平台编译器,它能够在当前CPU平台上为多
2、种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。Gcc编译过程编译过程oGcc编译程序时,编译过程可以被细分为四个阶段:n预处理(Pre-Processing)n编译(Compiling)n汇编(Assembling)n链接(Linking)文件类型文件类型oGcc通过后缀来区别输入文件的类别:n.c为后缀的文件:C语言源代码文件n.a为后缀的文件:是由目标文件构成的库文件n.C、.cc或.cxx为后缀:C+源代码文件n.h为后缀的文件:头文件n.i为后缀的文件:是已经预处理过的C源代码文件n.ii为后缀的文件:是已经预处理过的C+源代码文件n.o为后缀的文件:是编译后的
3、目标文件n.s为后缀的文件:是汇编语言源代码文件n.S为后缀的文件:是经过预编译的汇编语言源代码文件基本用法基本用法oGcc最基本的用法是:最基本的用法是:gcc 选项 要编译的文件 选项 目标文件 目标文件可以缺省,默认生成的可执行文件命名为:a.outngcc编译选项大约有100多个,其中多数我们不常用,这里介绍其中最基本、最常用的参数。o总体选项o告警选项o优化选项o体系结构相关选项o选项由-和字母组成,如-c、-o等。起步(演示)起步(演示)hello.c#include int main()printf(“hello worldn”);return 0;编译和运行程序:#gcc he
4、llo.c o hello#./hello输出:hello worldgcc-预处理预处理o在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef等)进行处理。可以使用gcc的选项“-E”让gcc在预处理结束后停止编译过程。rootlocalhost gcc#gcc E hello.c o hello.i/*hello.i*/typedef int(*_gconv_trans_fct)(struct _gconv_step*,struct _gconv_step_data*,void*,_const unsigned char*,_const unsigned ch
5、ar*,_const unsigned char*,unsigned char*,size_t*);#2 hello.c 2int main()printf(Hello!This is our embedded world!n);return 0;gcc-编译阶段编译阶段o接下来进行的是编译阶段,在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。rootlocalhost gcc#gcc S hello.i o hello.sgcc-
6、汇编阶段汇编阶段o汇编阶段把编译阶段生成的汇编程序.s转成目标文件.o,使用-c选项,可以把汇编程序转换成二进制目标代码。rootlocalhost gcc#gcc c hello.s o hello.ogcc链接阶段链接阶段o把目标代码链接起来,转换成为可执行文件。rootlocalhost gcc#gcc hello.o o helloo有个重要概念:函数库。程序中没有定义printf函数,stdio.h中也只是printf的声明,printf在哪里呢?事实上,该函数的实现在名字为libc.so.6的库文件当中,该库文件在/usr/lib目录下,没有特别指定,gcc会自动到该目录下搜索库文
7、件。该库是动态库。编译选项编译选项o-o output_filename:确定可执行文件的名称为output_filename,如果不给出该选项,gcc会给出预设的可执行文件a.outo-c:只编译,不连接成可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。o-S:生成一个后缀为.s的汇编文件o-E:对源代码只进行预处理o-g:产生调试工具所必须的符号信息,要相对编译的程序进行调试,就必须加入这个选项。编译选项编译选项o-O:对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就
8、相应的要慢一些。o-O2:比-O更好的优化编译、链接,当然整个编译、链接过程会更慢。编译选项举例编译选项举例#include int main()double counter;double result;double temp;for(counter=0;counter2000.0*2000.0*2000.0/20.0+2020;counter+=(5-1)/4)temp=counter/1979;result=counter;printf(“Result is%lfn”,result);return 0;编译选项编译选项ogcc optimize.c o optimizetime./opti
9、mize(执行文件)oGcc O optimize.c o optimizetime./optimize对比两次编译执行结果,后面执行的程序性能有很大幅度的提高编译选项编译选项o-I dirname:将dirname所指的目录加入到程序头文件搜索目录列表中。oC程序中头文件包含两种情况:n#include n#include“B.h”n对于预处理程序在系统预设的头文件目录(如:/usr/include)中搜索相应的文件,而“”是在当前目录中搜索头文件。这个选项的作用是告诉编译器,如果当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找例:gcc foo.c I/home/incl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 编程 基础
限制150内