
操作系统实验准备课讲述.ppt
12页操作系统实验课 主讲人: 仲志成 准备实验 熟悉实验环境 n学习目的: n1. 学会如何使用虚拟机运行Red Hat Linux n2. 了解Linux下的一些基本操作 n3. 本课重点: 掌握使用gcc编程的方法 如何使用虚拟机运行Red Hat Linux n操作步骤: n1. 进入Windows,双击桌面上的VMware work station图标启动VMware虚拟机 n2. 在虚拟机界面中选择Red Hat Linux n3. 选择start the virtual machine, 一路NEXT,启 动Linux后以root用户登录,密码为rootroot. n注意: 如果想从虚拟机界面切换到Windows界面, 请同时按Ctrl和Alt键,返回时只需点击虚拟机界 面 了解Linux下的一些基本操作 在图形界面,点击左下角的菜单->System Tools->terminal,就可以进入终端了,以后 我们就在这个Shell界面下编程. 常用指令请参考Linux方面的资料,我们主要 介绍几个重要操作: n列目录文件:ls n进入子目录和退到上级目录:cd 目录名、cd .. n建立新目录:mkdir 目录名 n如何挂载优盘: mount –t vfat /dev/sdb /mnt/usb 优盘 就挂载在/mnt/usb下. n如何进入编辑界面: gedit 文件名,可以在这个程序中编写 C的原代码。
掌握使用gcc编程的方法 ngcc最基本的用法是∶gcc [options] [filenames] n其中options是编译器所需要的参数, filenames给出相关的文件名称 n-o output_filename,确定输出文件的名称 为output_filename,同时这个名称不能和 源文件同名如果不给出这个选项,gcc 就给出预设的可执行文件a.out 掌握使用gcc编程的方法 n-lname,在连接时,装载名字为“libname.a”的 函数库,该函数库位于系统预设的目录或者由- L选项确定的目录下例如,-lm表示连接名为 “libm.a”的数学函数库 n-Ldir,制定编译的时候,搜索库的路径 ,这个选 项告诉连接程序,首先到-L指定的目录中去寻 找,然后到系统预设路径中寻找 举个例子: gcc –lm -L/home/mylib ts.c –o ts.out 这时,预编译、编译连接ts.c,生成一个指定名称为ts.out 的可执行文件,在编译过程中需要引入m库.对于一些标准 库来说,我们没有必要指出路径.只要它们在起缺省库的 路径下就可以了 , 系统的缺省库的路径/usr/lib /usr/local/lib /lib在这三个路径下面的库,我们可以 不指定路径 掌握使用gcc编程的方法 ngcc的错误类型及对策 n如果源程序中有错误,就无法生成最终的 可执行文件。
对于gcc给出错误资讯,我 们必须逐个进行分析、处理,并修改相应 的语言,才能保证源代码的正确编译连接 gcc给出的错误资讯一般可以分为四大 类,下面我们分别讨论其产生的原因和对 策 掌握使用gcc编程的方法 第一类∶C语法错误 n错误资讯∶文件source.c中第n行有语法错误 (syntax error)这种类型的错误,一般都是C语 言的语法错误,应该仔细检查源代码文件中第n 行及该行之前的程序,有时也需要对该文件所 包含的头文件进行检查有些情况下,一个很 简单的语法错误,gcc会给出一大堆错误,我们 最主要的是要保持清醒的头脑,不要被其吓倒 ,必要的时候再参考一下C语言的基本教材 掌握使用gcc编程的方法 n第二类∶头文件错误 n错误资讯∶找不到头文件head.h(Can not find include file head.h)这类错误是源代 码文件中的包含头文件有问题,可能的原 因有头文件名错误、指定的头文件所在目 录名错误等,也可能是错误地使用了双引 号和尖括号 掌握使用gcc编程的方法 n第三类∶档案库错误 n错误资讯∶连接程序找不到所需的函数库,例如 ∶ ld: -lm: No such file or directory n这类错误是与目标文件相连接的函数库有错误 ,可能的原因是函数库名错误、指定的函数库 所在目录名称错误等,需要确定档案库及目录 的名称并修改程序中及编译选项中的名称。
通 常我们会在课上给出正确的档案库 掌握使用gcc编程的方法 n第四类∶未定义符号 n错误资讯∶有未定义的符号(Undefined symbol) 这类错误是在连接过程中出现的,可能有两 种原因∶一是使用者自己定义的函数或者全局变 量所在源代码文件,没有被编译、连接,或者 干脆还没有定义,这需要使用者根据实际情况 修改源程序,给出全局变量或者函数的定义体 ;二是未定义的符号是一个标准的库函数,在 源程序中使用了该库函数,而连接过程中还没 有给定相应的函数库的名称,或者是该档案库 的目录名称有问题,这时需要使用档案库维护 命令ar检查我们需要的库函数到底位于哪一个函 数库中,确定之后,修改gcc连接选项中的-l和- L项 课堂作业 n启动虚拟机,并在Linux下编写一个C程序, 并自行调试通过. n预习《操作系统实验指导》的实验一 Have Fun! 。












