Ubuntu-Linux-操作系统(微课版)第九章-CC++编程课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Ubuntu-Linux-操作系统(微课版)第九章-CC++编程课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Ubuntu Linux 操作系统 微课版 第九 CC 编程 课件
- 资源描述:
-
1、1 第9章 C/C+编程Ubuntu Linux 操作系统(第 2 版)(微课版)工业和信息化“十三五”人才培养规划教材第9章 C/C+编程2 第9章 C/C+编程能力CAPACITY要求了解Linux平台上C/C+程序的编辑器、编译器和调试器。理解make和Makefile的编译机制,能够使用Autotools产生Makefile。了解GTK+图形用户界面工具包,能够搭建GTK编程环境。了解Qt应用程序开发框架,能够部署Qt编程环境。3 第9章 C/C+编程内容CONTENTS导航使用make和Makefile实现自动编译Linux编程基础基于GTK+的图形用户界面编程基于Qt的图形用户界面
2、编程4 第9章 C/C+编程9.1 Linux编程基础Emacs编辑器简介Emacs是Editor MACroS(宏文本编辑器)的缩写。Emacs提供一个功能全面的集成开发环境,程序员可以用来编写代码、编译程序、收发邮件。Emacs能够在当前大多数操作系统上运行。可以利用Emacs针对某种程序设计语言的编辑模式来更有效率地完成程序编写任务。5 第9章 C/C+编程9.1 Linux编程基础Emacs编辑器Emacs界面主界面Emacs编辑C源码6 第9章 C/C+编程9.1 Linux编程基础Emacs编辑器Emacs命令同时进行编辑和控制,Emacs需要使用组合键来发出控制命令。Emacs的
3、所用命令都以组合键加字母组成。理解文件和缓冲区将文件内容放到一个临时性的缓冲区里面,然后再对缓冲区的内容进行编辑。在通知编辑器保存缓冲区的内容之前,存放在磁盘上的原始文件是不会发生任何变化的。7 第9章 C/C+编程9.1 Linux编程基础Emacs编辑器Emacs编辑模式Emacs针对多种文档定义了不同的主模式(major mode)。每种主模式都提供有特殊的Emacs Lisp变量和函数。一个编辑缓冲区只能有一个主模式。退出一个主模式的方法就是进入另一个主模式。Emacs支持次模式(minor mode)。每一个缓冲区能够同时关联多个次模式。C和C+支持编译和调试8 第9章 C/C+编程
4、9.1 Linux编程基础GCC编译器GCC编译的4个阶段9 第9章 C/C+编程9.1 Linux编程基础GCC编译器静态连接通常对函数库的连接是在编译时(compile time)完成的。将所有相关的目标文件与所涉及的函数库(library)连接合成一个可执行文件。由于所需的函数都已合成到程序中,所以程序在运行时就不再需要这些函数库,这样的函数库被称为静态库(static library)。静态库文件在Linux下的扩展名为.a,称为归档文件(Archive File),文件名通常采用libxxx.a的形式。10 第9章 C/C+编程9.1 Linux编程基础GCC编译器动态连接将函数库的
5、连接推迟到程序运行时(run time)来实现,就要用到动态连接库(dynamic link library)。Linux下的动态链接库文件的扩展名为.so,文件名通常采用libxxx.so的形式。动态连接库的函数具有共享特性,连接时不会将它们合成到可执行文件中。编译时需通知编译器这些目标文件要用作动态连接库,使用位置无关代码(Position Independent Code,PIC,也译为浮动地址代码),具体使用gcc编译器时加上-fPIC选项。11 第9章 C/C+编程9.1 Linux编程基础GCC编译器编译C程序gcc 选项 源文件编译C+程序使用g+命令来进行C+的编译和连接,它会
6、自动调用gcc实现编译。g+选项 源文件gcc编译输出选项-E选项:对源文件进行预处理,生成的结果输出到标准输出。-S选项:对源文件进行预处理和编译,也就是编译成汇编代码。-c选项:对源文件进行预处理、编译和汇编,也就是生成目标文件(obj)。12 第9章 C/C+编程9.1 Linux编程基础GCC编译器gcc编译优化选项-O1(或者-O)表示优化生成代码。-O2表示进一步优化。-O3比-O2更进一步优化,包括 inline 函数。-O0表示不进行优化处理。13 第9章 C/C+编程9.1 Linux编程基础GCC编译器gcc其他常用选项-g选项表示生成带有调试信息的二进制形式的可执行文件。
7、-Wall选项编译时输出所有的警告信息,建议编译时启用此选项。-I选项后跟目录路径参数,将该路径添加到头文件的搜索路径中,gcc会在搜索标准头文件之前先搜索该路径。-L选项后跟库文件参数,用来指定连接声称可执行文件所用的库文件。多个源文件的编译方法多个文件一起编译。分别编译各个源文件再对编译后输出的目标文件进行连接。14 第9章 C/C+编程9.1 Linux编程基础GDB调试器生成带有调试信息的目标代码默认情况下,GCC在编译时没有将调试信息插入到所生成的二进制代码中。如果需要在编译时生成调试信息,可以使用gcc命令的-g或者-ggdb选项。使用gdb命令进行调试获得含有调试信息的目标代码后
8、,即可使用gdb命令进行调试。在命令行中直接执行gdb命令,或者将要调试的程序作为gdb命令的参数。进入GDB交互界面后即可执行具体的GDB子命令。15 第9章 C/C+编程内容CONTENTS导航使用make和Makefile实现自动编译Linux编程基础基于GTK+的图形用户界面编程基于Qt的图形用户界面编程16 第9章 C/C+编程9.2 使用make和Makefile实现自动编译make工具make通过Makefile文件维护源程序,实现自动编译。make 选项 目标名make命令主要选项:-f 描述文件:指定make编译所依据的描述文件(Makefile)。-n:只显示生成指定目标的
9、所有执行命令,但并不实际执行。-p:输出Makefile文件中所有宏定义和目标文件描述。-d:使用Debug(调试)模式。-c 目录:在读取Makefile之前改变到指定的目录。17 第9章 C/C+编程9.2 使用make和Makefile实现自动编译Makefile基础Makefile基本语法Makefile文件通过若干条规则来定义文件依赖关系。每条规则包括目标(target)、条件(prerequisites)和命令(command)三大要素。基本语法格式目标.:条件.命令.18 第9章 C/C+编程9.2 使用make和Makefile实现自动编译Makefile基础Makefile示
10、例#第1部分textedit:main.o input.o output.o command.o files.o tools.occ-o textedit main.o input.o output.o command.o/files.o utils.o#第2部分main.o:main.c def.hcc-c main.cinput.o:input.c def.h command.hcc-c input.coutput.o:output.c def.h buffer.hcc-c output.c19 第9章 C/C+编程9.2 使用make和Makefile实现自动编译Makefile基础Ma
11、kefile示例command.o:command.c def.h command.hcc-c command.cfiles.o:files.c def.h buffer.h command.hcc-c files.cutils.o:tools.c def.hcc-c tools.c#第3部分clean:rm textedit main.o input.o output.o rm command.o files.o tools.o20 第9章 C/C+编程9.2 使用make和Makefile实现自动编译Makefile基础Makefile示例文件依赖关系链21 第9章 C/C+编程9.2 使
12、用make和Makefile实现自动编译Makefile基础make基于Makefile的编译机制如果该项目没有编译过,也就是没有生成过目标,那么就根据所给的条件来生成目标,所有源文件都要编译并进行连接。如果该项目已经编译过,生成有目标,一旦条件发生变化,则需要重新生成目标。如果项目的某些源文件被修改,只编译被修改的源文件,并连接生成目标程序。如果项目的某些头文件改变,则需要编译引用了这些头文件的源文件,并连接生成目标程序。make通过比较目标和条件中的文件的修改日期来识别文件是否被修改。如果条件中的文件的日期要比目标中的文件的日期要新,或者目标不存在,那么make就会执行后续定义的命令。22
13、 第9章 C/C+编程9.2 使用make和Makefile实现自动编译Makefile的高级特性Makefile示例修改#第1部分objects=main.o input.o output.o command.o files.o utils.o#第2部分textedit:$(objects)cc-o edit$(objects)#第3部分main.o:defs.hinput.o:defs.h command.hcommand.o:defs.h command.houtput.o:defs.h buffer.hinsert.o:defs.h buffer.htools.o:defs.h#第4部
14、分.PHONY:cleanclean:rm edit$(objects)23 第9章 C/C+编程9.2 使用make和Makefile实现自动编译Makefile的高级特性隐式规则自动推导文件以及文件依赖关系后面的命令。变量定义可以定义一系列变量,变量一般都是文本字符串。伪目标伪目标并不是一个文件,只是一个标签。使用通配符make支持通配符:“*”、“?”和“.”,用于代替一系列的文件。文件包含在一个Makefile文件中可以引用另一个Makefile文件。24 第9章 C/C+编程9.2 使用make和Makefile实现自动编译make的工作方式基本功能(1)读入所有的Makefile文
15、件。(2)读入被include语句嵌入的其他Makefile文件。(3)初始化这些文件中的变量。(4)推导隐式规则,并分析所有规则。(5)为所有的目标文件创建依赖关系链。(6)根据依赖关系,决定哪些目标需要重新生成。(7)执行生成目标的命令。25 第9章 C/C+编程9.2 使用make和Makefile实现自动编译使用Autotools自动产生MakefileAutotools工作原理一个Autotools项目至少需要一个名为configure的配置脚本和一个名为Makefile.in的Makefile模板。实际上并不需要Autotools来建立Autotools包,configure是在最
16、基本的Shell(sh)上运行的Shell脚本,它检查用户系统获取每个特征,通过模板写出Makefile文件。configure在每个目录中创建所有文件。configure在命令行接受几个选项用于在不同的目录中安装文件。26 第9章 C/C+编程9.2 使用make和Makefile实现自动编译使用Autotools自动产生MakefileAutotools工作原理由configure产生的Makefile文件有点复杂,但很标准。它们定义由GNU标准所需的所有标准目标,常用的目标列举如下。p make或make all:创建程序p make install:安装程序p make distcle
17、an:删除由configure产生的所有文件27 第9章 C/C+编程9.2 使用make和Makefile实现自动编译使用Autotools自动产生MakefileAutotools工具AclocalAutoscanAutoconfAutoheaderautomake28 第9章 C/C+编程9.2 使用make和Makefile实现自动编译使用Autotools自动产生MakefileAutotools应用示例(1)准备源代码。(2)切换到项目工作目录,执行命令autoscan命令扫描工作目录生成configure.scan文件。(3)将文件configure.scan重命名为config
展开阅读全文