Linux编程GCC命令Makefile文件编写

上传人:工**** 文档编号:568943791 上传时间:2024-07-27 格式:PPT 页数:32 大小:762.52KB
返回 下载 相关 举报
Linux编程GCC命令Makefile文件编写_第1页
第1页 / 共32页
Linux编程GCC命令Makefile文件编写_第2页
第2页 / 共32页
Linux编程GCC命令Makefile文件编写_第3页
第3页 / 共32页
Linux编程GCC命令Makefile文件编写_第4页
第4页 / 共32页
Linux编程GCC命令Makefile文件编写_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《Linux编程GCC命令Makefile文件编写》由会员分享,可在线阅读,更多相关《Linux编程GCC命令Makefile文件编写(32页珍藏版)》请在金锄头文库上搜索。

1、推荐资料LinuxC资源网站:ftp:/目录Linux编程概述GCCMakefile课程实践目录Linux编程概述GCCMakefile课程实践Linux编程概述Linux的编程语言开发过程Linux开发工具Linux的编程语言基本语言C、C+、Java脚本语言Perl、PHP、Bash开发过程编辑编译链接运行调试对源代码进行编辑,VI对源代码编译,生成目标程序,GCC将分散的模块组成一个可执行的整体运行编译好的程序./+目标文件名调试运行时的错误GDB链接- continue函数库分为静态库和动态库。静静态库:链接时,静态库的文件代码会被拷贝到可执行文件中。动态库:链接时,动态库的代码不会被

2、加入可执行文件中,而是在程序被执行的时候加载。Linux开发工具编辑工具VI编译工具GCC目录Linux编程概述GCCMakefile课程实践GCC简介基本规则常用参数实例分析简介1/3GCC概述gcc是一个强大的工具集合,它包含了预处理器,编译器,汇编器,链接器等组件。它会在需要的时候调用其他组件。输入文件的类型和传递给gcc的参数决定了gcc调用具体的哪些组件。对于开发者,它提供的足够多的参数,可以让开发者全面控制代码的生成,这对嵌入式系统级的软件开发非常重要他可以处理C、C+、Fortan、Pascal、Objective-C、Java、Ada等。简介2/4预处理在该阶段,编译器分析处理

3、源代码文件中的各种宏指令,如include,if等。编译在该阶段,GCC首先要检查代码的规范性、是否有语法错误等,在检查无误后,GCC把代码翻译为汇编语言。汇编在该阶段,编译器把编译生成的汇编代码转成二进制目标代码链接在该阶段,编译器把汇编阶段生成的二进制代码、程序中用到的库文件链接起来,生成可执行文件。简介3/4GCC的历史1984,FSF建立,GNU Project:开放系统支撑软件1985,GCC项目启动1987,GCC 1.0 release,C compiler1991,Linux项目开始发布1992,GCC2.0 release,C/C+1994,Linux1.0 release1

4、997,EGCS。Architecture Related Optimization and C+ support2001, GCC3.0 release,EGCS Merged,Multi Languages/targets2005, GCC4.0 release,IR Enhanced2007, GCC4.2 release,OpenMP support简介4/4GCC的特点支持多种编程语言-C/C+/Fortan/JAVA可移植性强:主要采用C语言编写交叉支持能力强Build, host and target处理器支持多X86/ia/MIPS/ARM/SPARC/应用范围广高性能计算、商

5、用服务器、PC、嵌入式系统模块化设计前端+中间表示|后端,松耦合基本规则GCC的命令格式gcc options infile.c为后缀的文件,C语言源代码文件;.o为后缀的文件,是编译后的目标文件.s为后缀的文件,是汇编语言源代码文件;GCC常用参数介绍1/2常用选项:-c 编译为目标文件,不连接库-S 编译为汇编代码-E 预处理.预处理之后的代码将送往标准输出-Wwarn. 设置警告,可以设置的警告开关很多,通常用-Wall开启所有的警告-O level :设置优化级别,level可以是0,1,2,3或者s,默认为-O0,即不进行优化处理.-Dname=definition: 在命令行上定义

6、宏,有两种方式,-Dname或者-Dname=definition. 在命令行上设置宏定义的目的主要是为了在调试的时候设定一些开关,而在发布的时候再关闭或者打开这些开关即可,当然宏定义也用来对代码进行有选择地编译.另外也还有其他的一些作用.GCC常用参数介绍1/2-Uname 取消宏定义name,作用和上面的正好相反.-Idir. 把dir加到头文件的搜索路径中,而且gcc会在搜索标准头文件之前先搜索dir.-llibrary 在连接的时候搜索library库.库是一些archieve文件-其成员是目标文件.如果有文件引用library, library在命令行的位置应该在那个文件之后,因此,

7、越底层的库越要放在后面.比如如果你要连接pcap库,那么你就需要使用-lpcap对源文件进行编译.-Ldir. 把dir加到库文件的搜索路径中,而且gcc会在搜索标准库文件之前先搜索dir.-g 产生调试信息. GDB能够使用这些调试信息。-o outfile 指定输出文件的文件名,默认为a.outGCC使用例子Example1(编译一个文件)gcc -o first first.c Example2(编译两个文件)gcc c power.cgcc c compute.cgcc power.o compute.o o power -lm目录Linux编程概述GCCMakefile课程实践Mak

8、efile简介Make的语法及常用参数Makefile的基本结构实例分析简介1/2What is Make?Make 是用于自动编译、链接程序的实用工具。Make的优点的优点“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。简介2/2Make的工作原理当输入make命令之后,会默认的在当前目录下寻找名为“Makefile”或“makefile”的文件。寻找到文件之后,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命

9、令的错误,或是编译不成功,make根本不理。make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。 Make的语法及常用参数make的使用make options target常见的选项:-f FILE 以指定的FILE 文件作为makefile。-n 只打印要执行的命令,但不执行这些命令。-s 在执行命令时不显示命令。-d 显示调试信息Makefile的基本结构1/2一个简单的Makefile文件包含一系列的“规则”,其样式如下:目标(target) : 依赖(prerequiries)命令(command)Makefile的基本结构2/2

10、目标(target)通常是要产生的文件的名称,目标的例子是可执行文件或OBJ文件。目标也可是一个执行的动作名称,这样的目标通常称为伪目标(PHONY)诸如clean 。依赖是用来输入从而产生目标的文件,一个目标经常有几个依赖。命令是Make执行的动作,一个规则可以含有几个命令,每个命令占一行。每个命令行前面必须是一个Tab字符,即命令行第一个字符是Tab。这是不小心容易出错的地方。实例分析1/2Eample1编译一个文件的makefile文件$cat makefilepower:power.cgcc power.c -o power -lm 实例分析2/2Eample2编译两个文件的makef

11、ile文件$cat makefilepower:power.o compute.ogcc power.o compute.o -o power -lmpower.o:power.cgcc -c power.ccompute.o:compute.cgcc -c compute.c目录Linux编程概述GCCMakefile课程实践课程实践1/2Lab1:编写一个程序,完成以下要求该程序包含3个文件,并且完成对圆的面积和周长进行计算的功能,其中每个文件包含的内容如下:第一个文件,包含主函数,提示用户输入半径,并计算相应的结果。第二个文件,包含计算圆的面积的函数第三个文件,包含计算圆的周长的函数La

12、b2:编写相应的makefile,并且编译运行该程序课程实践2/2Lab3:分析一下的makefile文件,并回答以下问题。CC = gccOPTIONS = -x04 oOBJECTS = main.o input.o compute.oSOURCES = main.c input.c compute.cHEADERS = main.h input.c compute.hpower:main.c $(OBJECTS)$(CC) $(OPTIONS) power $(OBJECTS) lmmain.o:main.c $(HEADERS)input.o:input.c input.hcompute.o:compute.c compute.hall.tar:$(SOUCES) $(HEADERS) makefiletar -cvf $(SOURCES) $(headers) makefile all.tarclean:rm *.o 问题一:这一部分有什么意义问题二:这一句命令的意义问题三:这一句命令的意义问题四:如何执行clean的操作(命令格式)The EndThe End

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号