嵌入式linux下c程序设计--gcc,gdb,makefile

嵌入式linux下c程序设计--gcc,gdb,makefile

ID:33711483

大小:877.02 KB

页数:22页

时间:2018-05-24

嵌入式linux下c程序设计--gcc,gdb,makefile_第1页
嵌入式linux下c程序设计--gcc,gdb,makefile_第2页
嵌入式linux下c程序设计--gcc,gdb,makefile_第3页
嵌入式linux下c程序设计--gcc,gdb,makefile_第4页
嵌入式linux下c程序设计--gcc,gdb,makefile_第5页
资源描述:

《嵌入式linux下c程序设计--gcc,gdb,makefile》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式Linux下C程序设计主讲:成宝宗GCC编译器主讲:成宝宗gcc可以使程序员灵活地控制编译过程。编译过程一般可以分为下面四个阶段,每个阶段分别调用不同的工具进行处理。预处理链接编译汇编源程序(*.c)可执行文件预处理器编译器汇编器连接器程序编译过程gcc的使用格式$gcc[options][filenames]其中filenames为所要编译的程序源文件。当使用gcc时,gcc会完成预处理、编译、汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。后缀名所对应的语言-c只是编译不链

2、接,生成目标文件“.o”gcc–c-S只是编译不汇编,生成汇编代码“.s”gcc–S-E只进行预编译,不做其他处理“.i”gcc–E–o-g在执行程序中包含标准调试信息-ofile把输出文件输出到file里asa.s–oa.o-v打印编译器版本信息-Idir增加头文件的搜索范围-Ldir增加库文件的搜索范围-Wall显示告警信息-l指定需要使用的库文件-fpic/fPIC生成位置无关的目标代码-shared产生共享库,在创建共享库时使用-DM相当于在程序中添加#defineM1(用于调试)使用优化选项当用gcc编译C代码时,它会试着用最少的时间完成编译并且使编译后的代码易于调试.易于调试

3、意味着编译后的代码与源代码有同样的执行次序,编译后的代码没有经过优化。有很多选项可用于告诉gcc,在耗费更多编译时间和牺牲易调试性的基础上,产生更小更快的可执行文件。这些选项中最典型的是-O和-O2选项。-O选项告诉gcc对源代码进行基本优化。这些优化在大多数情况下都会使程序执行的更快。-O2选项告诉gcc产生尽可能小和尽可能快的代码。-O2选项将使编译的速度比使用-O时慢。但通常产生的代码执行速度会更快。使用调试选项gcc支持数种调试。在这些选项里最常用的是-g选项。-g选项告诉gcc产生能被GNU调试器使用的调试信息以便调试程序。gcc提供了一个很多其他C编译器里没有的特性,在gcc

4、里能使-g和-O(产生优化代码)连用。这一点非常有用,因为能在与最终产品尽可能相近的情况下调试代码。同时使用这两个选项时必须清楚所写的某些代码已经在优化时被gcc作了改动。Makefile主讲:成宝宗Makefile文件简介Makefile一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个mak

5、e命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具。make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。一个简单的Makefile的例子test:prog.ocode.ogcc–otestprog.ocode.oprog.o:prog.cprog.hcode.hgcc–cprog.c–oprog.ocode.o:code.cco

6、de.hgcc–ccode.c–ocode.oclean:rm–f*.omake命令Makefile写好之后,每次改变了某些源文件,只要执行make命令:#make所有必要的重新编译将执行。make程序利用makefile中的数据和每个文件的最后修改时间来确定那个文件需要更新,对于需要更新的文件,make程序执行makefile数据中定义的命令来更新。Makefile编写规则一个Makefile文件主要含有一系列的规则,每条规则包含以下内容。一个目标(target),即make最终需要创建的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。一个或多个依赖文件(de

7、pendency)列表,通常是编译目标文件所需要的其他文件。一系列命今(command),是make执行的动作,通常是把指定的相关文件编译成目标文件的编译命令,每个命令占一行,且每个命令行的起始字符必须为TAB字符。一个带变量的Makefile的例子OBJS=prog.ocode.oCC=gcctest:${OBJS}${CC}–otest${OBJS}prog.o:prog.cprog.hcode.h${CC}–cprog.c–o

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

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

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