第3章linux下C编程基础

第3章linux下C编程基础

ID:36879642

大小:211.50 KB

页数:35页

时间:2019-05-10

第3章linux下C编程基础_第1页
第3章linux下C编程基础_第2页
第3章linux下C编程基础_第3页
第3章linux下C编程基础_第4页
第3章linux下C编程基础_第5页
资源描述:

《第3章linux下C编程基础》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第3章Linux下C编程基础3.1GCC程序编译3.2GDB程序调试3.3Makefile工程管理3.1GCC程序编译Linux系统下的gcc(GUNCCompiler)是GUN推出的功能强大、性能优越的多平台编译器,是GUN代表作之一。gcc可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%-30%。Gcc编译器能将C、C++语言源程序、汇编程序编译、链接成可执行文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平

2、台开发软件,因此尤其适合在嵌入式领域的开发编译。Gcc编译过程Gcc编译程序时,编译过程可以被细分为四个阶段:预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking)文件类型Gcc通过后缀来区别输入文件的类别:.c为后缀的文件:C语言源代码文件.a为后缀的文件:是由目标文件构成的库文件.C、.cc或.cxx为后缀:C++源代码文件.h为后缀的文件:头文件.i为后缀的文件:是已经预处理过的C源代码文件.ii为后缀的文件:是已经预处理过的C++源代码文件.o为后缀的文件:是编译后的目标文件.s为后缀的文件:是汇编语言源代码

3、文件.S为后缀的文件:是经过预编译的汇编语言源代码文件基本用法Gcc最基本的用法是:gcc[选项]要编译的文件[选项][目标文件]目标文件可以缺省,默认生成的可执行文件命名为:a.outgcc编译选项大约有100多个,其中多数我们不常用,这里介绍其中最基本、最常用的参数。总体选项告警选项优化选项体系结构相关选项选项由-和字母组成,如-c、-o等。起步(演示)hello.c#includeintmain(){printf(“helloworld”);return0;}编译和运行程序:#gcchello.c–ohello#./hello输出:hellowor

4、ldgcc--预处理在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef等)进行处理。可以使用gcc的选项“-E”让gcc在预处理结束后停止编译过程。[root@localhostgcc]#gcc–Ehello.c–ohello.i/*hello.i*/……typedefint(*__gconv_trans_fct)(struct__gconv_step*,struct__gconv_step_data*,void*,__constunsignedchar*,__constunsignedchar**,__constunsignedchar*,u

5、nsignedchar**,size_t*);……#2"hello.c"2intmain(){printf("Hello!Thisisourembeddedworld!");return0;}gcc--编译阶段接下来进行的是编译阶段,在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。[root@localhostgcc]#gcc–Shello.i–ohello.sgcc--汇编阶段汇编阶段把编译阶段生成的汇编程序

6、.s转成目标文件.o,使用-c选项,可以把汇编程序转换成二进制目标代码。[root@localhostgcc]#gcc–chello.s–ohello.ogcc—链接阶段把目标代码链接起来,转换成为可执行文件。[root@localhostgcc]#gcchello.o–ohello有个重要概念:函数库。程序中没有定义printf函数,stdio.h中也只是printf的声明,printf在哪里呢?事实上,该函数的实现在名字为libc.so.6的库文件当中,该库文件在/usr/lib目录下,没有特别指定,gcc会自动到该目录下搜索库文件。该库是动态库。编译选项-ooutput

7、_filename:确定可执行文件的名称为output_filename,如果不给出该选项,gcc会给出预设的可执行文件a.out-c:只编译,不连接成可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。-S:生成一个后缀为.s的汇编文件-E:对源代码只进行预处理-g:产生调试工具所必须的符号信息,要相对编译的程序进行调试,就必须加入这个选项。编译选项-O:对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是

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

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

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