麒麟操作系统教程(微课版) 课件 第9章 C-C++编程环境_第1页
麒麟操作系统教程(微课版) 课件 第9章 C-C++编程环境_第2页
麒麟操作系统教程(微课版) 课件 第9章 C-C++编程环境_第3页
麒麟操作系统教程(微课版) 课件 第9章 C-C++编程环境_第4页
麒麟操作系统教程(微课版) 课件 第9章 C-C++编程环境_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人民邮电出版社·Linux创新人才培养系列教材第9章C/C++编程环境《麒麟操作系统实用教程(微课版)》CONTENTS本章目录019.1编译和调试C/C++程序源程序、GCC编译器、GDB调试器、Make工具、Autotools029.2搭建桌面应用开发环境GUI开发框架、Qt安装、QtCreator使用039.3习题与上机实验理论习题、Autotools实验、Qt开发实验、Kylin-IDE试用CHAPTER9.1编译和调试C/C++程序从源码到可执行程序的完整编译流程掌握Linux平台软件开发核心技术9.1.1源程序源程序就是源码,本身是文本形式,可以使用任何文本编辑器编写。传统的Linux程序员往往首选经典的编辑器Vi(VIM)或Emacs。常用编辑器Vi/VIM经典的文本编辑器,Linux程序员首选Emacs功能强大的编辑器,也是集成开发环境VisualStudioCode跨平台的现代编辑器,功能丰富建议初学者掌握基本编译知识后选用IDE程序执行方式编译方式•将源程序整个编译成目标程序•通过链接程序链接成可执行程序•可脱离源程序单独执行优点:执行效率高、速度快解释方式•逐句翻译、逐句执行•不产生目标程序•源程序和解释器必须同时参与优点:灵活性大、编程效率高C和C++属于编译型语言9.1.2使用GCC编译器(上)使用GCC编译并生成可执行文件需要经历4个阶段,每个阶段都有特定的功能和输出。1预处理Preprocessing•调用cpp命令•展开包文件•分析宏定义-E预处理选项2编译Compilation•调用编译器•生成汇编代码•编译成.s文件-S编译选项3汇编Assembly•调用as命令•转换成目标代码•生成.o文件-c汇编选项4链接Linking•调用ld命令•合并目标文件•生成可执行文件-o输出选项编译流程图源文件.c预处理.i汇编.s目标.o可执行文件9.1.2使用GCC编译器(中)静态链接工作原理编译时将所有相关的目标文件与所涉及的函数库链接合成一个可执行文件静态库文件•Linux扩展名:.a(归档文件)•文件名形式:libxxx.a•Windows扩展名:.lib特点✓依赖的动态链接库较少✓对版本不敏感,兼容性好✗生成的程序比较大使用ar命令创建静态库动态链接工作原理将函数库的链接推迟到程序运行时实现,函数具有共享特性动态库文件•Linux扩展名:.so•文件名形式:libxxx.so•Windows扩展名:.dll特点✓生成的程序比较小✓占用的内存较少✗需要运行时库支持创建动态链接库示例gcc-fPIC-cfile01.cgcc-fPIC-cfile02.cgcc-sharedlibtest.sofile01.ofile02.o9.1.2使用GCC编译器(下)编译环境部署build-essential软件包包含编译C和C++程序所需的完整工具sudoaptinstallbuild-essential编译输出选项-E预处理,输出到屏幕-S编译成汇编代码-c生成目标文件.o-o指定输出文件编译优化选项-O0不进行优化-O1基本优化-O2推荐级别(折中)-O3最高优化其他常用选项-g生成调试信息-Wall输出所有警告-I添加头文件搜索路径-L指定链接库文件编译示例gcc-otestgcctestgcc.c编译C程序g++-otestg++testg++.cpp编译C++程序9.1.3使用GDB调试器GDB(GNUDebugger)是GNU发布的调试工具,通过与GCC配合使用,为基于Linux的软件开发提供完善的调试环境。麒麟桌面操作系统默认已安装GDB。生成调试信息使用-g选项编译时包含调试信息,便于GDB关联源码和机器码gcc-otestgdb-gtestgcc.c调试级别-g1最小调试信息-g2默认级别(推荐)-g3最大调试信息调试选项会增加文件大小和执行开销,仅在开发阶段使用GDB常用命令file文件名打开可执行文件run(r)运行程序list(l)列出源码next(n)执行下一步step(s)单步进入break(b)设定断点continue(c)继续运行kill终止程序quit(q)退出GDB9.1.4Make与自动化编译(上)Make工具基于Makefile文件实现整个项目的完全自动化编译,从而提高软件开发效率。Makefile定义编译规则,理顺源文件之间的相互依赖关系。Makefile文件文件名•Makefile或makefile•GNUmakefile•其他文件名需用-f选项指定基本语法目标...:条件...命令三要素目标-要生成的文件条件-生成目标所需的文件命令-生成目标的方法语法规则命令必须以Tab开头不能使用空格开头,这是Makefile的严格要求续行符使用反斜线\实现语句续行注释以#符号开头的内容被视为注释转义符使用反斜线进行转义,如\#表示#字符9.1.4Make与自动化编译(中)Makefile示例#第1部分:生成可执行文件textedit:main.oinput.ooutput.ocommand.ofiles.otools.occ-otexteditmain.oinput.ooutput.ofiles.outils.o#第2部分:生成目标文件main.o:main.cdef.hcc-cmain.cinput.o:input.cdef.hcommand.hcc-cinput.c...#第3部分:清理clean:rmtexteditmain.oinput.o...make命令基本用法make[选项][目标名]常用选项-f指定描述文件-n只显示命令不执行-p输出所有宏定义编译机制1.查找Makefile文件2.查找第一个目标3.检查依赖关系4.递归生成依赖5.执行命令生成目标9.1.4Make与自动化编译(下)隐式规则Make可以自动推导文件及文件依赖关系后面的命令自动推导自动推导.c到.o的编译规则查看规则使用make-p查看所有隐式规则变量定义类似于C/C++语言中的宏,在Makefile解析时自动扩展定义变量CC=gccCFLAGS=-Wall-g使用变量$(CC)$(CFLAGS)-o...伪目标不是一个文件,只是一个标签,用于执行特定操作clean伪目标clean:rm*.o使用makeclean通配符*匹配任意字符?匹配单个字符[...]匹配指定范围*.c表示所有.c文件文件包含使用include指令包含其他Makefileincludeconfig.mk类似于C语言的#include指令9.1.5使用Autotools工具辅助编译构建软件(上)Autotools是GNU程序的标准构建系统,用于从源码生成用户可以使用的目标。大部分Linux开源项目都使用Autotools编译架构生成configure脚本。Autotools组成autoconf生成配置脚本automake生成Makefile.inperlPerl语言环境m4宏处理器主要命令aclocal扫描宏定义autoscan扫描源码生成模板autoconf生成configure脚本autoheader生成config.h.inautomake生成Makefile.in安装Autotoolssudoaptinstallautomake9.1.5使用Autotools工具辅助编译构建软件(下)使用Autotools的步骤1准备源码2autoscan3修改configure.ac4aclocal5autoconf6autoheader7创建Makefile.am8automake9./configure10make&install常用宏AC_PREREQautoconf版本AC_INIT软件名称版本AM_INIT_AUTOMAKEautomake必需AC_PROG_CC指定编译器AC_CONFIG_FILES生成Makefile打包发布makedist将程序和相关文档打包为压缩文档dpkg-deb打包为.deb包进行发布makeuninstall从系统卸载软件CHAPTER9.2搭建桌面应用开发环境图形用户界面开发框架与工具在国产操作系统上开发GUI应用9.2.1主流的GUI开发工具和框架GTK+简介跨平台开源GUI开发工具包,GNOME桌面环境的基础底层库•Glib-底层工具库•Pango-文本渲染•ATK-辅助功能支持语言C、C++(gtkmm)、Python(PyGTK)、Perl、Ruby、Java等代表作:Firefox、GIMPQt简介不仅是GUI库,还具有编程语言功能,拥有更好的开发环境和工具核心组件•QtDesignStudio-可视化编辑器•QtCreator-跨平台IDE•QtFramework-C++库类支持语言C++、Python、Ruby、Perl、.NET等使用QML创建流畅界面,C++提高性能9.2.2安装Qt开发环境安装步骤1安装编译工具sudoaptinstallbuild-essential2安装Qt组件sudoaptinstallqt5-defaultqtcreatorcmake3验证安装qmake--versionqt5-default包qtbaseQt基础模块集合,框架核心组件qmakeQt项目构建工具,生成makefile附带工具Qt助手完整的QtAPI文档和教程Qt设计器UI设计工具,设计.ui文件QtLinguist翻译工具,国际化应用程序9.2.3使用QtCreator开发桌面应用(上)QtCreator是专门针对Qt程序员定制的跨平台集成开发环境,可以在Windows、Linux和macOS上运行,支持在桌面、移动和嵌入式平台创建应用程序。复杂代码编辑器•支持C++、QML、JavaScript、Python等•代码补全功能•语法突出显示•重构功能•内置丰富文档版本控制•Git集成•Subversion支持•Perforce支持•Mercurial支持UI设计器QtDesigner传统C++QtAPI的表单生成器QtQuickDesigner基于QML的快速界面设计项目管理支持CMake和QMake,轻松切换目标平台设备模拟器在与目标设备几乎相同的条件下测试调试应用QtQuick编译器将源码编译为本地机器代码,加快启动时间9.2.3使用QtCreator开发桌面应用(中)创建项目步骤1启动向导欢迎界面→Projects→New2选择模板Application→QtWidgetsApplication3设置项目输入项目名称和路径4选择构建系统qmake或CMake5设置类信息选择主窗口类MainWindow6翻译文件选择用户界面语言7选择套件选择构建套件(Kit)8完成创建查看汇总信息并完成常见问题解决QApplication类型不完整在麒麟V10SP1上可能遇到此问题解决方法:帮助→关于插件→C++→取消勾选ClangCodeModel→重启QtCreator设计模式左侧常用部件列表,可直接拖放右侧对象和类列表、属性编辑窗口中间主设计区域、动作编辑器、信号与槽编辑器9.2.3使用QtCreator开发桌面应用(下)界面设计步骤1打开UI文件展开Forms,双击mainwindow.ui进入设计模式2拖放部件从左侧DisplayWidgets拖放Label到主窗口3设置属性在右侧属性编辑窗口设置text属性4保存文件文件→保存所有9.2.3使用QtCreator开发桌面应用(下)编译运行运行程序单击左下角运行按钮(绿色三角形)安全中心拦截选择"始终允许"放行程序运行查看编译输出切换到"编译输出"窗口查看过程发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论