Linux系统实验指导书.doc_第1页
Linux系统实验指导书.doc_第2页
Linux系统实验指导书.doc_第3页
Linux系统实验指导书.doc_第4页
Linux系统实验指导书.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

Linux系统实验指导书 Linux系统基础实验指导书吉林大学珠海学院电子信息系xx.122目录实验一Linux系统的了解与安装 一、实验目的3 二、实验内容3 三、实验步骤4 四、思考练习5实验二Linux的基础命令 一、实验目的5 二、实验内容5 三、思考练习20实验三文本器vi的使用 一、实验目的21 二、实验内容21 三、思考练习24实验四g编译工具的使用 一、实验目的25 二、实验内容25 三、思考练习27实验五gdb调试工具的使用 一、实验目的27 二、实验内容27 三、思考练习31实验六KDE的简单了解 一、实验目的32 二、实验内容32 三、思考练习33实验七嵌入式Linux 一、实验目的33 二、实验内容33 三、思考练习34附录Linux相关 一、攻克Linux34 二、“Linux”正确读音及音标35 三、Linux商标的故事353实验一Linux系统的了解与安装 一、实验目的了解Linux系统的发展历程及其独有的特点,并学会独立的安装各种版本的Linux系统。 二、实验内容 1、Linux系统的发展历程。 Linux操作系统(Linux),是一种计算机操作系统。 Linux内核最初是为英特尔386微处理器设计的。 现在Linux内核支持从个人电脑到大型主机甚至包括嵌入式系统在内的各种硬件设备。 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 最初的设想中,Linux是一种类似Minix这样的一种操作系统。 Linux的历史是和GNU紧密联系在一起的。 从1983年开始的GNU计划致力于开发一个自由并且完整的类Unix操作系统,包括软件开发工具和各种应用程序。 到1991年Linux内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。 Linux的标志和吉祥物是一只名字叫做Tux的企鹅,Linux的注册商标是Linus Torvalds所有的。 这是由于在1996年,一个名字叫做William R.Della Croce的律师开始向各个Linux发布商发信,声明他拥有Linux商标的所有权,并且要求各个发布商支付版税,这些发行商集体进行上诉,要求将该注册商标重新分配给Linus Torvalds。 在开始的时候,Linux只是个人狂热爱好的一种产物。 但是现在,Linux已经成为了一种受到广泛关注和支持的一种操作系统。 包括IBM和惠普在内的一些计算机业巨头也开始支持Linux。 很多人认为,和其他的商用Unix系统以及微软Windows相比,作为自由软件的Linux具有低成本,安全性高,更加可信赖的优势。 目前至少有386个以上的Linux版本可用,这个数字表明有多少人想建立自己的版本,把Linux同其他开放源代码软件结合在一起形成一个完整的操作系统产品。 除了Red Hat、Suse和Debian之外的Linux版本,还有Ubuntu、Fedora、红旗Linux、Gentoo Linux等等,这都是比较优秀的Linux版本了。 Ubuntu是Debian的副产品。 它强调的是PC易用性,但也有服务器版本。 现在很多人都在玩这个版本,当然我国开发的红旗Linux以人性化,中文显示效果,实用工具等等也是很受欢迎的。 2、Linux系统独有的特征。 Linux系统有文本界面和图形用户界面(GUI)。 其特征包括:多用户、多任务、多平台、可编程SHELL、提供源代码、仿真终端、支持多种文件系统及强大的网络功能等。 多用户多个用户(六个)能同时从相同或不同的终端(终端号tty1tty6)上用同一个应用程序的副本进行工作。 在控制台,切换终端的命令是ALT+F1F6;在仿真终端窗口(ps/0n)是SHIFT+ALT+F1F6。 多任务可同时执行多个程序,程序之间互不妨碍。 与WINDOWS的多任务不同,Linux将系统没有用到的剩余物理内存全部用来做硬盘的高速缓存。 笔者曾经打开三个xterm,分别用于查找文件、调试程序、发邮件。 而且还可以指定某一个程序在后台运行,指定某一些4程序在特定的时间内运行(at命令)。 多平台Linux能在X86平台上运行,也能移植到其他平台。 可编程SHELL SHELL是解释并执行命令的系统外壳程序。 通过编写SHELL程序,使得系统更加个性化;而且在一些程序中具有C语言的功能。 提供源代码Linux是自由软件,源代码完全公开,可以自行编译内核,修改和扩充操作系统,进行二次开发。 Linux支持的文件系统很多,例如EXT 3、NFS、VFS、ISO 9660、MSDOS等等。 三、实验步骤关于Linux的安装一般有2种常用的方法光盘安装、硬盘安装。 1、光盘安装要求有Linux系统光盘,以及光驱。 然后在BIOS中设置PC从CD-ROM启动,放入系统光盘,重启PC,就可以进入安装界面了。 这种方法最简单方便。 2、硬盘安装要求有Linux系统的ISO映像,以及一些小软件grub fordos、WINGrub、PartitionMagic。 下面具体介绍这种安装方法。 (1)在C盘根目录下建一文件夹C:bootgrub,把grub_for_dos解压,将里面的全部内容复制到grub目录下(注是将里面的文件,不是将解压后的文件夹)。 修改“C:bootgrubmenu.lst”文件,在最下面加上一行代码如下title InstallLinux kernel(hd0,0)/boot/grub/vmlinuz initrd(hd0,0)/boot/grub/initrd.img(这里的hd0,0表示第一块硬盘上第一个分区,如果不确定可以用WINGrub来查看) (3)打开Linux镜像。 找到isolinux文件夹,把里面的文件vmlinuz和initrd.img复制到C:bootgrub目录下。 (4)复制grub_for_dos文件里面的“grldr”文件到C盘目录下,即c: (5)修改C盘的改“boot.ini”文件(右键“我的电脑”-属性-高级-启动和故障恢复-设置-,将其修改即可),在最下面加上一行c:grldr=install Linux,保存退出。 (6)把Linux的光盘镜像放到FAT32分区下,必须! (7)重启系统。 在启动时选择“install Linux”,然后就进入了Linux的引导程序,选择语言、键盘类型。 接下来选择hard disk,这时选择列表中分别有sd1,sd2,sd3(有些机器为hdax),选择存放Liunx镜像的分区,输入路径,接下来就是和光盘安装一样的安装界面了。 (PartitionMagic是一个功能强大的图形界面的无损分区软件,可在Windows下完成硬盘的分区以及各种文件系统格式的转换甚至主盘和逻辑驱动器的转换。 它是在已安装Windows的PC上再安装Linux的得力助手,从硬盘上分割一部分出来用于安装Linux。 )如果你只是想体验一下Linux,那么建议你用虚拟机来安装,不过对PC的要求比较高,而且也不稳定,常会有意想不到的错误。 如果你想真正的学习Linux,那么最好是装双系统,一般点的PC都可以做到,而且也不会影响你使用Windows系统。 删除Linux分两个步骤1.重写mbr删除前首先备份在Linux工作中的重要文件,然后用dos启动光盘(不是xp安装5光盘)从光驱引导系统或者用window98启动软盘从软驱引导系统(可能需要大家在bios里设置系统启动顺序),反正不是从硬盘引导就行,在dos提示符下输入下面的命令fdisk/mbr上面的命令是重写硬盘上的主引导扇区以便清除掉装入主引导扇区的grub程序,把引导系统的主动权还给微软(呵呵,比尔在笑),取出光驱中的光盘或软驱中软盘,修改bios设置成硬盘为第一引导后保存bios,重启电脑,这下看到熟悉的Window XP启动画面了吧。 2.删除Linux分区并创建Windows分区进入XP后,大家可以在桌面上“我的电脑”图标单击鼠标右键,在弹出的快捷菜单中选定“管理”并单击左键,打开“计算机管理”程序,点击“存储”项下的“磁盘管理”,会出现硬盘的分区情况,大家会看到三个分区的图标,这就是Linux中的boot分区,swap交换分区和根分区,在其中一个图标上单击鼠标右键,在出现的菜单中选择“删除逻辑驱动器”,系统提示“所选的分区不是windows创建的,可能含有其他操作系统可以识别的数据。 要删除这个分区吗?”,单击“是”按钮后这个Linux分区被删除,按这个步骤把全部Linux分区删除后会发现三个图标变成了一个“可用空间”图标,再在这个图标上单击鼠标右键创建windows分区并格式化后,Linux被彻底从硬盘上删除了,而在Windows中增加了一个盘符。 四、思考练习 1、上网或通过其他渠道系统的了解一下Linux。 2、下载Linux的映像并自己亲自动手安装。 实验二Linux的基础命令 一、实验目的掌握Shell的基本概念。 掌握并熟练使用Linux的各种命令。 二、实验内容 1、Shell简介shell就是一个命令行解释器,充当Linux内核与用户之间的接口,虽然在图形环境下我们可以完成很多工作,但是有时我们必须用shell来完成一些图形界面无法提供的操作,所以掌握简单的shell操作是必备的。 与其他操作系统相比,linux有很多shell程序可供选择,默认使用功能强大的bash。 在桌面环境下,通过选择“应用程序”“附件”“终端”命令来启动shell要想退出可以关闭窗口或在命令行中输入“exit”命令即可。 shell的提示符可以让用户了解当前的工作状态,比如yhyuehai$表示含义为“yh”为当前登录用户,“yuehai”表示当前Linux的主机名,“”表示当前位于yh用户主目录,“$”表示当前是普通用户(root用户是#)。 shell将每次用户输入的命令记录在历时命令缓冲区中,可以使用上下箭头在历时命令中查找,也可以输入history命令列出全部运行过的命令,然后找到对应编号后输入“!对应编号”即可。 要想清空历史命令则输入history然后空格,然后-c回车。 最常用的通6配符是“*”和“?”,分别替代多个字符和一个字符。 2、Linux的常用命令2.1管理文件和目录命令2.1.1cd命令Cd命令用来改变所在目录。 语法cd目录绝对路径或者相对路径cd返回用户宿主目录cd.用户的当前目录cd.返回上一级目录2.1.2ls命令Ls命令用来查看目录内容。 语法ls【命令选项】对象lsa列出所有文件,包括隐藏文件lsl详细列出目录下文件的权限、所有者文件大小等详细信息lsf列出目录下文件名及其目录类型lst依照最后修改文件时间列出文件名lsR列出当前目录和其子目录的文件名lss按文件大小排序2.1.3cat命令Cat命令用来显示文件内容。 语法cat对象72.1.4mkdir命令Mkdir命令用来创建目录。 语法mkdir【选项】目录2.1.5mv命令Mv命令用来移动或重命名文件或目录。 语法mv【选项】源文件/目录目的文件/目录主要选项-b若存在同名,覆盖前备份原来文件。 -f强制覆盖同名文件2.1.6cp命令Cp命令用来复制文件或目录。 语法cp【选项】源文件/目录目的文件/目录主要选项-b若存在同名,覆盖前备份原来文件。 -f强制覆盖同名文件82.1.7rm命令Rm命令用来删除文件或目录。 语法rm【选项】文件/目录主要选项-f强制删除,无确认信息-r按递归删除目录,默认只删除文件2.1.8bzip2/bunzip2命令Bzip2命令用来压缩/解压文件。 语法bzip2【选项】文件/目录92.1.9gzip/gunzip命令Gzip命令用来压缩/解压文件。 语法gzip【选项】文件/目录2.1.10tar命令Tar命令用来备份文件。 语法tar【选项】备份文件【文件/目录列表】主要选项-c创建备份文件-x还原备份文件-v显示命令执行过程-f tar命令必需选项-z采用gzip压缩文件-j采用bzip2压缩文件102.1.11pwd命令该命令用来判定当前目录。 语法pwd2.1.12grep命令该命令用于查找特定的字串。 语法grep字串文件2.1.13touch命令该命令用来创建新文件。 语法touch文件名112.2管理使用者命令2.2.1useradd命令该命令用来新建用户账号,只限超级用户可用。 语法useradd【选项】用户名2.2.2passwd命令该命令用来设置或修改用户口令。 语法passwd【选项】用户2.2.3userdel命令该命令用来删除指定的用户账号,只限超级用户使用。 语法userdel【-r】用户名2.2.4su命令该命令用来修改用户。 语法su用户名1213142.2.5chmod命令该命令用来改变许可权限。 语法chmod文件使用者(u,g,o,a)增减(+,-,=)权限名(r,w,x)文件U拥有文件的用户;+添加权限;r读取权;G所有者所在的组群;-删除权限;w写入权;O其他人;=使成为唯一权限;x执行权;A每个人/全部;2.3关机和查看系统信息命令2.3.1shutdown命令该命令用来关机,限根用户使用。 语法shutdown-选项主要选项-k不是真正关机,只是发出警告信息;-r关机后重启;-t在规定的时间后关机;shutdown-t22.3.2reboot命令该命令也是一个关机命令。 系统以最快速度关机,不把内存或缓冲区的东西写回内存。 2.3.3ps命令该命令用来查看系统中哪些程序正在执行及其执行情况,也可列出所有程序占用内存情况。 语法ps-选项主要选项-l用长格式列出;-u列出使用者名称和使用时间;-m列出内存分布情况;-r只列出正在执行的前台程序;-x列出所有程序包括没有终端的程序;152.3.4top命令该命令可以查看目前程序的执行情况和内存使用情况。 每几秒更新一次,方便追踪,按Ctrl+C退出。 162.3.5kill命令该命令用来终止一个正在执行中的进程。 语法kill-选项进程pid值2.3.6date命令该命令用来设定/修改现在的时间和日期。 语法date-选项显示时间格式2.3.7cal命令该命令用来显示月历及年历。 2.4线上查询命令2.4.1man命令该命令用来查询/解释一个命令的使用方法。 语法man命令名称退出按q。 172.4.2locate命令该命令用来定位文件和目录。 语法locate文件/目录2.4.3whatis命令该命令用来查询某个命令的含义。 语法whatis命令2.5文件阅读命令2.5.1head命令该命令用来查看文件的开头部分(前10行)。 语法head文件名2.5.2tail命令该命令用来查看文件的结尾部分(10行)。 语法tail文件名2.5.3more/less命令该命令是分页工具,用来一页页查看信息。 182.6有关网络的操作命令2.6.1ftp命令该命令用来传输文件。 语法ftp-选项主机名称/IP地址主要选项-d详细显示命令执行过程;-i关闭互动模式不询问任何问题;-g关闭本地主机文件,支持特殊字符的扩充特征;-n不使用自动登录;-v显示命令执行过程。 2.6.2bye命令该命令在ftp模式下可中断连线作业,结束ftp执行,无选项。 2.6.3ping命令该命令用于检测网络是否正常工作。 语法ping-选项主机名称/IP地址主要选项-c次数设置完成要求回应的次数;-f大量且快速地送网络封包给一台机器;-i秒数指定收发信息的间隔时间;-s bytes设置数据包大小;-q不显示命令执行过程;-v详细显示命令执行过程。 2.6.4tel命令该命令用于远程登录。 不支持X Windows。 语法tel主机名/IP2.6.5rlogin命令该命令也是用来远程登录,允许用户启动远程系统上的交互命令会话。 语法rlogin-选项host主要选项-8允许8位数据通道;-l指定要登录远端主机的用户名称/IP。 2.6.6stat命令该命令用于给出Linux系统的网络情况。 语法stat-选项主要选项-a全部列出,包括正在等待的程序;-c持续列出网络状态;-i显示网络界面信息;-n用IP代替名称;-o显示计时器;-r显示网络路径表;-t/u显示TCP/UDP协议的连接情形.2.7有关磁盘空间的命令2.7.1mount命令19该命令用于挂上文件系统,限超级用户使用。 语法mount-t设备类型存放目录Mount IP地址/所提供的目录存放目录(须在存放前建好)主要选项-t制定所挂上的文件系统名称;-w将文件系统设为可读写;-r挂上的文件系统设为只读。 挂Linux文件系统mount/dev/hab1/mnt挂光盘mount-t iso9660/dev/hdb/cdrom2.7.2umount命令该命令用于卸下已挂上的文件系统。 语法mount目录/设备2.7.3df命令该命令用来检查各硬盘分区和已挂上的文件系统的硬盘空间。 语法df-选项主要选项-a把全部的文件系统和各分区的磁盘使用情形列出;-k把个分区的大小和挂上的文件分区大小用KB表示;-t列出某一个文件系统的所有分区磁盘空间使用量;-T列出每个分区所属文件系统的名称。 2.7.4du命令该命令用于显示文件目录或大小。 语法du-选项主要选项-a显示全部目录及其次目录下的每个文件所占的空间;-b显示目录和文件的大小;-c最后再加上一个总计;-s只列出各文件大小的总和;-x只计算属于同意文件系统的文件。 202.7.5fsck命令该命令用于检查和修复Linux文件系统。 语法fsck-选项分区名称主要选项-a自动修复,不问任何问题,比较危险;-r采取互动方式,问问题,让用户确认并决定处理方式;-s依次检查作业而不是同时执行;-v显示命令执行过程;-T指定要检查的文件系统的类型;-N不是真正执行指令,仅列出实际执行时会进行的动作。 2.8其他命令2.8.1echo命令该命令用来在显示器上输出一个字串。 语法echo字串2.8.2clear命令该命令用来清除显示器的显示。 2.8.3lpr命令该命令用来把指定的文件发送到打印队列中。 语法lpr文件名2.9命令历史和Tab自动补全一次次重复输入已经使用过的命令会令人十分厌烦,此时就可以使用命令行历史,通过使用向上/下箭头滚动,会发现许多前面已输入过的命令。 如果输入了文件名、命令或路径名的一部分,然后按Tab,bash会把剩余部分补全。 三、思考练习 1、认真学习上述的各种命令并在终端反复练习,以至熟练掌握。 2、不同版本之间,有些命令是不相同的,要在以后的使用中注意。 21实验三文本器vi的使用 一、实验目的 1、了解vi并熟悉vi的基本操作。 2、学会用vi来/修改文件,为后续的实验打好基础。 二、实验内容 1、vi的简介vi命令是linux下的全屏幕文本,vi器提供了丰富的功能。 这个器十分简陋,对于初学者很不友好。 但是在linux中vi器作用非常大,以后尤其我们在配置各种服务器时修改配置文件时十分有用。 Vi器的文本模式查找功能比grep命令更加强大,并且Linux安装程序会自动安装附带的vi器。 几乎所有的Linux用户和吸引管理员都使用vi器完成自己的工作。 2、Vi的模式vi器有3种模式命令模式、输入模式、末行模式。 掌握这三种模式十分重要命令模式vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下Esc键都可以返回命令模式。 在命令模式中输入字幕“i”就可以进入vi的输入模式文件。 输入模式在这个模式中我们可以、修改、输入等工作,在器最后一行显示一个“-INSERT-”标志着vi进入了输入模式。 当我们完成修改输入等操作的时候我们需要保存文件,这时我们需要先返回命令模式,在进入末行模式保存。 末行模式在命令模式输入“”即可进入该模式,在末行模式中有好多好用的命令。 3、vi的基本操作 (1)进入vi,在命令行下输入vi(文件名).此时进入的是命令行模式,光标位于屏幕的上方。 22 (2)在命令行模式下输入i进入到输入模式,可以看出,在屏幕底部显示有“插入”表示输入模式,在该模式下可以输入文字信息。 (3)最后,在输入模式下,按“Esc”,则当前模式转入命令行模式,并在底行中输入“wq”(存盘退出)进入末行模式。 23这样,就完成了一个简单的vi操作流程命令行模式-输入模式-末行模式。 由于vi在不同的模式下有不同的操作功能,因此,一定要时刻注意屏幕最下方的提示,分清所在的模式。 4、vi中各模式的功能键 (1)命令行模式光标方向的移动,除了可以使用方向键,还可以使用以下命令向上移动光标k向左移动光标h向右移动光标l向下移动光标j翻页命令Ctrl+F向前翻整页Ctrl+U向前翻半页Ctrl+B向后翻整页Ctrl+D向后翻半页行内快数跳转移动到本行行首$移动到本行行尾在命令模式下,使用以下命令可以快速的在行间跳转1G跳转到文件首行G跳转到尾行#G跳转到文件的#行删除操作(命令模式使用)x删除光标处的单个字符dd删除光标所在行dw删除当前字符到单词尾包括空格的所有字符#x例如3x删除光标处向右的三个字符#dd例如3dd从当前行开始向下删除三行文本 (2)输入模式进入输入模式命令i插入命令a附加命令o打开命令c修改命令r取代命令s替换命令Esc退出命令输入模式的操作Home光标到行首End光标到行尾Page Up和Page Down上下翻页Delect删除光标位置的字符撤销操作u命令取消最近一次的操作,可以使用多次来恢复原有的操作U取消所有操作Ctrl+R可以恢复对使用u命令的操作复制操作yy命令复制当前整行的内容到vi缓冲区yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词y$复制光标所在位置到行尾内容到缓存区24y复制光标所在位置到行首内容到缓存区#yy例如5yy就是复制5行#yw例如2yw就是复制两个单词如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如3,5y复制第三行到第五行内容到缓存区。 (3)末行模式显示行号和取消行号(末行模式使用)set nu显示行号set nonu取消行号查找和替换vi的查找和替换功能主要在末行模式完成至上而下的查找/要查找的字符窜,其中/代表从光标所在位置起开始查找,例如/work至下而上的查找?要查找的字符窜例如/work替换:s/old/new用new替换行中首次出现的old:s/old/new/g用new替换行中所有出现的old:#,#s/old/new/g用new替换从第行到第行中出现的old%s/old/new/g用new替换整篇中出现的old如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c或s/old/new/gc 5、恢复文件vi在某一个文件时,会生成一个临时文件,这个文件以.开头并以.swp结尾。 正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次时可以选择一下命令处理O只读打开,不改变文件内容E继续文件,不恢复.swp文件保存的内容R将恢复上次以后未保存文件内容Q退出vi D删除.swp文件或者使用vir文件名来恢复未保存的内容vi命令大致给大家介绍这些,其实它的功能很强大的,我们在日常实际使用过程中不断积累命令的使用方法,相信大家会很快掌握这个命令的。 三、思考练习 1、用vi自己新建一个文件,并在此基础上练习各种模式下的相关命令,以达到熟练掌握。 2、vi的升级版本vim已经问世了,功能相当强大,且保持与vi90%想兼容,因此,感兴趣的可以查看相关资料进行学习。 25实验四g编译工具的使用 一、实验目的 1、了解g的编译过程,学会使用g来编译程序。 2、通过对g的学习,初步了解Linux系统编程的一些入门知识。 二、实验内容 1、g的简单了解GNU CC(简称g)是GNU项目中符合ANSI C标准的编译系统,能够编译C、C+和Objec C等语言编写的程序。 G不仅功能强大,而且可以编译如C、C+、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且G又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。 G所支持后缀名解释.c C原始程序.s/.S汇编语言原始程序.C/./.cxx C+原始程序.h预处理文件(头文件).m Object-c原始程序.o目标文件.i已经过预处理的C原始程序.a/.so编译后的库文件.ii已经过预处理的C+原始程序 2、g编译流程解析G的编译流程分为4个步骤,分别为?预处理(Pre-Processing);?编译(Compiling);?汇编(Assembling);?链接(Linking)。 下面就具体来看一下G是如何完成4个步骤的。 首先,有以下hello.c源代码#includeInt main()Printf(“Hello!This isa newworld!n”)Return0; (1)预处理阶段在该阶段,编译器将上述代码中的stdio.h编译进来,并且用户可以使用G的选项“-E”进行查看,该选项的作用是让G在预处理结束后停止编译过程。 注意G指令的一般格式为G【选项】要编译的文件【选项】【目标文件】其中,目标文件可缺省,G默认生成可执行的文件,命为编译文件。 Out26在此处,选项“-o”是指目标文件。 “.i”文件为已经过预处理的c原始程序。 (2)编译阶段接下来进行的是编译阶段,在这个阶段中,G首先要检查代码的规范性、是否有语法错误等,一确定代码的实际要做的工作,在检查无误后,G把代码翻译成汇编语言。 用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。 (3)汇编阶段汇编阶段是把编译阶段生成的“.s”文件转成目标文件,可用选项“-c”看到汇编代码已转化为“.o”的二进制目标代码。 (4)链接阶段在成功编译后,就进入了链接阶段。 在这里涉及到一个重要的概念函数库。 在这个程序中并没有定义“printf”的函数实现,且在预编译中包含进的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实现“printf”函数的呢?最后的答案是系统把这些函数实现都被做到名为libc.so.6的库文件中去了,在没有特别指定时,G会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到libc.so.6库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。 函数库一般分为静态和动态两种。 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。 其后缀名一般为“.a”。 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。 动态库一般后缀名为“.so”,如前面所述的libc.so.6就是动态库。 G在编译时默认使用动态库。 完成了链接后,G就可以生成可执行文件。 27运行该可执行文件,出现正确的结果。 3、G编译选项分析G有超过100个的可以选项,主要包括总体选项、告警和出错选项、优化和体系结构相关选项。 在这里,我只对初阶段常用的一些选项进行简单的说明。 选项所对应的语言-c只是编译不链接,生成目标文件“.o”-S只是编译不汇编,生成汇编代码-E只进行预编译,不做其他处理-g在可执行程序中包含标准调试信息-v打印编译器内部编译各过程命令行信息和编译器版本-static链接静态库-library连接名为library的库文件-ansi支持符合ANSI标准的C程序-pedantic允许发出ANSIC标准所列出的全部警告信息-pedantic-error允许发出ANSIC标准所列出的全部错误信息-w关闭所有告警-Wall允许发出G提供的所有有用的报警信息-werror把所有告警信息转化为错误信息,并在告警发生时终止编译 三、思考练习自己找一段比较复杂的c语言程序,按照上述的步骤亲自动手做几次,直到可以熟练的掌握使用G来编译C语言的源程序。 实验五Gdb调试工具的使用 一、实验目的 1、了解gdb的编译过程,学会使用gdb来编译程序。 2、通过调试一个有问题的程序,进一步熟练使用Vi操作,而且熟练掌握G编译命令及Gdb的调试命令。 3、通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。 二、实验内容 1、Gdb的简单了解调试是所有程序员都会面临的问题。 如何提高程序员的调试效率,更好更快地定位程序中的问题从而加快程序开发的速度,是大家共同面对的。 就如大家熟知的28Windows下的一些调试工具,如VC自带的如设置断点、单步跟踪等,都受到了广大用户的欢迎。 那么,在Linux下与哦什么很好的调试工具呢?这里介绍的Gdb调试器是一款GNU开发组织并发布的UNIX/Linux下的调试工具。 虽然,它没有图形化的友好界面,但是它强大的功能也足以与微软的VC工具等媲美。 2、Gdb使用流程这里给出了一个短小的程序,由此来带领大家熟悉一下Gdb的使用流程。 建议大家能够实际动手操作。 首先,打开Linux下的器Vi,如下代码(由于为了更好地熟悉Gdb的操作,在此使用Vi,希望大家能够参见实验三中对Vi的介绍,并熟练使用Vi)。 /*test,c*/#includeInt sum(int m);Int main()Int I,n=0;Sum (50);For(i=1;i=50;i+)N+=I;Printf(“The sumof1-50is%dn”,n);Int sum(int m)Int I,n=0;For(i=1;i=m;i+)N+=I;Printf(“The sumof1-m is%dn”,n);在保存退出后首先使用G对test.c进行编译,注意一定要加上选项“-g”,这样编译出的可执行代码中才包含调试信息,否则之后Gdb无法加载入该可执行文件。 虽然这段程序没有错误,但调试完全正确的程序可以更加了解Gdb的使用流程。 接下来就启动Gdb进行调试。 注意,Gdb进行调试的是可执行文件,而不是如“.c”的源代码,因此,需要先通过G编译生成可执行文件才能用Gdb进行调试。 29可以看出,在Gdb的启动画面中指出了Gdb的版本号、使用的库文件等信息,接下来就进入了由“(gdb)”开头的命令行界面了。 (1)查看文件在Gdb中键入“l”(list)就可以查看所载入的文件。 注意在Gdb的命令中都可以使用缩略形式的命令,如“i”代表“list”,“b”代表“breakpoint”,“p”代表“print”等,也可以使用“help”命令查看帮助信息。 可以看出,Gdb列出的源代码中明确地给出了对应的行号,这样就可以大大地方便代码的定位。 (2)设置断点设置断点是调试程序中的一个非常重要的手段,它可以是程序到一定位置暂停它的运行。 因此,程序员在该位置处可以方便地查看变量的值、堆栈情况等,从而找出30代码的症结所在。 在Gdb中设置断点非常简单,只需在“b”后加入对应的行号即可(这是最常用的方式,另外还有其他方式设置断点)。 要注意的是,在Gdb中利用行号设置断点是指代码运行到对应行之前将其停止,如上例中,代码运行到第5行之前暂停(并没有运行第5行)。 (3)查看断点情况在设置完断点之后,用户可以键入“info b”来查看设置断点情况,在Gdb中可以设置多个断点。 (4)运行代码接下来就可以运行代码了,Gdb默认从首行开始运行代码,可键入“r”(run)即可(若想从程序中指定行开始运行,可在r后面加上行号)。 (5)查看变量值在程序停止运行之后,程序员所要做的工作是查看断点处的相关变量值。 在Gdb中只需键入“p”+变量值即可。 在此处,为什么变量i“的值为如此奇怪的一个数字呢?原因就在于程序是在断点设置的对应行之前停止的,那么在此时,并没有把“i”的数值赋为零,而只是一个随机的数字。 但变量“n“是在第四行赋值的,故在此时已经为零。 小技巧Gdb咋显示变量值时都会在对应值之前加上“$N“标记,它是当前变量值的引用标记,所以以后若想再次引用此变量就可以直接写作“$N“,而无需写冗change的变量名。 (6)单步运行单步运行可以使用命令“n”(next)或”s”(step),它们的区别在于若有函数调用的时候,”s“会进入该函数而”n“不会进入该函数。 因此,”s“就类似于VC等工具中的”step in“,”n“类似于VC等工具中的”step over“。 31可见,使用“n“后,程序显示函数sum的运行结果并向下执行,而使用”s“后则进入到sum函数之中单步运行。 (7)恢复程序运行在查看完所需变量及堆栈情况后,就可以使用命令“c“(continue)恢复程序的正常运行了。 这时,它会把剩余还未执行的程序执行完,并显示剩余程序中的执行结果。 可以看出,程序在运行完后退出,之后程序处于“停止状态“。 小知识在Gdb中,程序的运行状态有“运行”、“暂停”、和“停止”3种,其中“暂停”状态为程序遇到了断点或观察点之类的,程序暂时停止运行,而此时函数的地址、函数参数、函数内部的局部变量都会被压入“栈”(Stack)中。 故在这种状态下可以查看函数的变量值等各种属性。 但在函数处于“停止”状态之后,“栈”就会自动撤销,它也就无法查看各种信息了。 3、Gdb的基本命令Gdb的命令可以通过查看help进行查找,由于Gdb的命令很多,因此Gdb的help将其分为了很多类(class),用户可以通过进一步查看相关class找到相应命令。 若用户想要查找call命令,就可以键入“help call”。 Gdb中的命令主要分为以下几类工作环境相关命令、设置断点与恢复命令、源代码查看命令、查看运行数据相关命令及修改运行参数命令。 在这里就不一一介绍了,感兴趣的可以自己查阅相关的资料。 Gdb的使用切记点?在G编译选项中一定要加入“-g”。 ?只有在代码处于“运行”或“暂停”状态时才能查看变量值。 ?设置断点后程序在指定之前停止。 三、思考练习以上我们是用一段正确的程序来做得讲解,为了我们可以更好的掌握Gdb调试工具的使用,建议大家找一段有错误的程序,并自己亲自动手使用Gdb来调试,找出错误并加以改正,以达到熟练掌握及应用的目的。 32实验六KDE的简单了解 一、实验目的 1、简单了解KDE桌面环境,并可以熟练的操作。

温馨提示

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

评论

0/150

提交评论