文档详情

西安理工大学《linux操作系统》第二次实验-编程.ppt

发布:2017-07-24约5.7千字共39页下载文档
文本预览下载声明
主要内容 了解什么是GNU计划及其意义 熟悉各种GNU计划实用程序 熟悉gcc编译器的用法和执行过程 了解多文件项目 熟悉makefile的结构 熟悉gdb调试程序 21.1 GNU计划的实用程序 GNU (它代表“GNU is not UNIX”)是由Richard stallman开发的一个与UNIX兼容的软件系统。大多数Linux软件是经过自由软件基金会(Free Software Foundation)的GNU()公开认证授权的,因而通常称为GNU软件。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。 GNU计划包括上百个命令、工具和工具的集合以及文档。如果没有它们,Red Hat Linux不会像现在这样有这么丰富的内容。 21.2 编程环境 各种编程语言或shell程序脚本的源代码文件可以用任何一种文本编辑器来打开和编辑。 在Linux开发程序一般来说有两个主要的编辑器 vi/vim Emacs 21.3 gcc的介绍 gcc简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。 gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 gcc的执行过程 虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶ 预处理(也称预编译,Preprocessing) 编译(Compilation) 汇编(Assembly) 连接(Linking)。 C程序四阶段 gcc的基本用法和选项 在使用gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。 gcc的错误类型及对策 gcc编译器如果发现源程序中有错误,就无法继续进行,也无法生成最终的可执行文件。 C语法错误 头文件错误 档案库错误 未定义符号 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 3. 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test.i文件。 4. 选项 -S 用法:#gcc -S test.i 作用:将预处理输出文件test.i汇编成test.s文件。 5. 选项 -c 用法:#gcc -c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 6. 无选项链接 用法:#gcc test.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 7. 选项-O 用法:#gcc -O1 test.c -o test 作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。 21.4 GNU make 介绍 make是所有想在Unix /Linux系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说有点偏激,但make实在是应该用在任何稍具规模的程序中的。 自动更新和编译应用程序。 多文件项目 为什么要使用多文件项目 何时分解项目 怎样分解项目 GNU make工具 如果,用户有在其他软件平台上开发软件的经验,那么这些程序对于用户来讲是很好学的。 使用make来编译程序 基本 Makefile 结构 编写 make 规则 Makefile变量 21.5 调试工具:gdb 启动gdb 首先重新编译程序,然后启动gdb。 $gcc –g –o debug2 debug2.c $gdb debug2 gdb的功能 堆栈跟踪 监视你程序中变量的值; 设置断点以使程序在指定的代码行上停止执行; 一行行的执行代码。 gdb基本命令 gdb 支持很多的命令使你能实现不同的功能。这些命令从简单的文件装入到允许你检查所调用的堆栈内容的复杂命令。 21.6 Linux C程序的框架 关于程序的存放目录 所有用户皆可使用的系统程序存放在/bin中 超级用户才能使用的系统程序放在/sbin中 所有用户皆可使用的应用程序存放在/usr/bin中 超级用户才能使用的应用程序存放在/usr/sbin中 所有用户皆可使用的与本地机器有关的程序存放在/usr/local/bin中
显示全部
相似文档