已阅读5页,还剩170页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 Red Hat9的安装1 实验目的l 了解LINUX的安装过程2 实验设备l 硬件:SinoSys-M3实验平台,PC机3 实验原理简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品 !Linux以它的高效性和灵活性著称。Linux模块化的设计结构,使得它既能在价格昂贵的工作站上运行,也能够在廉价的PC机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。Linux具有Unix的优点:稳定、可靠、安全,有强大的网络功能。在相关软件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器使用,利用ipchains/iptables可构建NAT及功能全面的防火墙。Linux有很多发行版本,较流行的有:RedHat Linux、Debian Linux、RedFlag Linux等。 RedHat Linux,支持Intel,Alpha和SPARC平台,具有丰富的软件包。可以说,RedHat Linux是Linux世界中非常容易使用的版本,它操作简单,配置快捷,独有的RPM模块功能使得软件的安装非常方便。Debian Linux基于标准LINUX内核,包含了数百软件包,如GNU软件,TeX,X Windows系统等。每一个软件包均为独立的模块单元,不依赖于任何特定的系统版本,每个人都能创建自己的软件包。Debian Linux是一套非商业化的由众多志愿者共同努力而成的LINUX.RedFlag Linux(红旗Linux)是Linux的一个发展产品,由中科红旗软件技术有限公司开发研制的以 Intel和Alpha芯片为CPU构成的服务器平台上第一个国产的操作系统版本。它标志着我国在发展国产操作系统的道路上迈出了坚实的一步。 相对于Windows操作系统及Unix操作系统来讲,Linux凭借其开放性及低成本,已 经在服务器操作系统市场获得了巨大发展。但由于其操作界面复杂,一时难以让普通 PC用户接受。GNOME是GNU组织中专门开发桌面环境的项目。GNOME作为开放源代码的 软件开发成果,基于兼容性良好的CORBA技术,与Linux系统相辅相成,带给用户更加 友好的界面,更多的使用、检查、修改及分发自由。与同是开放源代码图形用户界面 的KDE相比较,GNOME表现得更能减轻其他公司创建Linux桌面应用的劳动。GNOME已经 成为业内人士普遍看好的一个趋势性软件。继服务器版1.0、桌面版2.0、嵌入式Linux之后,红旗最近又推出了新产品-红 旗服务器2.0和红旗网络商务通等多种发行版本和相关。目前,红旗软件已在中国市场 上已奠定了一个坚实的基础,成为新一代的操作系统先锋。Copyright 2003-2006 SinoSys Technologies, Inc. All rights reserved. -175 - E-mail: 4 实验步骤在开始安装Linux之前,请首先收集一下相关硬件信息。如果不能确定系统对硬件的兼容性可以到进行查询。为Linux准备一个5G以上空间(建议值)大小的分区。如果使用VM Ware的话,相关的设置请查看网上相交的教程。然后就可以开始我们的Linux安装之旅了。4.1 第一步首先我们准备好三张安装光盘,用第一张光盘引导计算机。从光盘启动后会出现如图1所示画面,这是一个提示符状态,可以通过输入不同的命令来选择不同的安装模式。1.图形安装(直接回车) 2.文本安装(输入 linux text)为了避免不必要的麻烦,我们直接按回车键,用缺省模式安装。图14.2 第二步然后会询问用户是否对光盘完整性进行检查,如图2,一般来说选择Skip就可以。图24.3 第三步接下来就进入了Red Hat Linux的图形安装界面如图3所示。Red Hat Linux的安装向导的智能化程度也很高,通过使用鼠标指指点点就可以完成安装。图34.4 第四步选择在整个安装过程中使用的语言如图4所示,这里我们当然选择“Chinese(Simplified)(简体中文)”。图44.5 第五步键盘配置如图5所示,选择U.S. English。PS:除非使用特殊键盘类型,否则不需要对键盘进行特殊配置图54.6 第六步鼠标配置如图6所示,安装程序通常会选择正确的鼠标类型,直接单击“下一步”。图64.7 第七步 选择安装类型如图7所示,Red Hat提供了三种不同类型的软件包套件,个人桌面,工作站和服务器。可以根据自己的需要选择不同的安装类型。这里我们选择“定制”。图74.8 第八步硬盘分区如图8所示。Linux操作系统下分区划分和Windows的不同。习惯了Windows工作模式的朋友在这一步可能会遇到困难。但是不要害怕,下面的每一步都弄明白就可以顺利完成分区过程。选择“用 Disk Druid 手工分区”,单击“下一步”。这里选择“自动分区”会有破坏硬盘原有数据的可能性。图84.9 第九步开始对硬盘进行分区如图9所示,在这里可以看到目前现有磁盘的分区情况。我们可以通过双击空闲的磁盘空间或者点击“新建”按钮来为Linux创建一个新的分区。图94.10 第十步我们双击空闲的磁盘分区,会出现一个添加分区的对话框如图10所示,在“挂载点”的下拉列表中选择/,也就是“根挂载点”。在“文件系统类型”的下拉列表中选择ext3,这个是Linux所使用的文件系统类型。为分区指定空间大小,起始柱面不需要更改,点击终止柱面输入框后面的上下箭头来根据需要调整分区大小。点击“确定”按钮。在整个Linux系统中有且只有一个根挂载点,这个将是整个系统的根目录。Linux并不像Windows和DOS操作系统有很多盘符,每个盘符都有一个“根目录”。Linux系统下的/目录永远是目录树的最底层。图104.11 第十一步双击空闲空间为Linux系统创建页面分区如图11所示。在“文件系统类型”下拉列表中选择swap,通过调整终止柱面来制定分区大小。点击“确定”按钮。swap空间的大小一般为物理内存的2-3倍。如果不知道物理内存的具体数值,可以点击终止柱面数据框后面的上下箭头来把“大小(MB)”后面的数值调整为512(4),一般来说都可以满足需要。图114.12 第十二步(可选) 默认情况下Linux系统下的应用程序的是存放在/usr目录的,如果空间充足可以为/usr目录单独指定挂载点。如图12所示,在“挂载点”后的下拉列表中选择/usr,其他项目设置方法同“第九步”图124.13 第十三步引导装载程序设置如图13所示。现在多系统共存已经是司空见惯了的事情了。Red Hat提供的GRUB工具提供了多系统启动的解决方案。直接单击下一步就可以了。图134.14 第十四步网络配置如图14所示,这个根据自己的网络情况进行相应配置。如果对网络不是很了解。可以直接单击下一步跳过。图144.15 第十五步防火墙配置如图15所示。Red Hat提供了三种安全级别的防火墙配置,可以根据自己的需要进行选择。如果作为服务器,那么需要打开提供服务使用的端口。 因为我们的Red Hat只用于开发,因此不需要防火墙。图154.16 第十六步附加语言支持如图16所示,选择可能会用到的语言,以提供相关语言的显示、输入。图164.17 第十七步设置时区如图17所示。图174.18 第十八步设置根口令如图18所示。Linux系统下有一个根用户,在系统中拥有至高无上的权利,用户名是root。一般来说只有在对系统进行管理时才使用此用户。建议密码满足一定复杂性要求。图184.19 第十九步验证配置如图19所示。如果没有特殊要求,或者不知道这个是什么。请单击下一步。图194.20 第二十步(在第七步选择“定制”的情况下)选择软件包如图20所示。Red Hat为用户提供丰富的应用软件,按功能进行了分类。如果你想编译内核或QT时少出问题,请选择“全部”。图204.21 第二十一步准备开始安装如图21所示全部工作都做好后,就可以开始进行文件复制了。图214.22 第二十二步安装过程中会提示更换光盘如图22所示。图224.23 第二十三步换第三张盘!图234.24 第二十四步随便你选不选择!图234.25 第二十五步完成Linux的安装,单击退出按钮,Linux就可以启动工作了。如图26所示图245 实验思考5.1 Linux与Windows操作系统在磁盘的管理上有什么差别?实验二 Linux基础命令1 实验目的l 熟练运行Linux的基础命令2 实验设备l 硬件:PC机l 软件:Red Hat93 实验原理Linux虽然是免费的,但它的确是一个非常优秀的操作系统,与MSWINDOWS相比具有可靠、 稳定、速度快等优点,且拥有丰富的根据UNIX版本改进的强大功能。下面,作为一个典型的DOS 和WINDOWS用户,让我们一起来学习Linux的一些主要命令,希望大家能尽快进入到Linux的世界里。3.1 su su命令是最基本的命令之一,常用于不同用户间切换。例如,如果登录为 user1,要切换为user2,只要用如下命令: $su user2 然后系统提示输入user2口令,输入正确的口令之后就可以切换到user2。完成之后就可以用exit命令返回到user1。 su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令 ,则系统提示输入根口令,输入之后则可切换为根用户。 如果登录为根用户,则可以用su命令成为系统上任何用户而不需要口令。 3.2 pwd pwd命令也是最常用最基本的命令之一,用于显示用户当前所在的目录。 3.3 cd cd命令不仅显示当前状态,还改变当前状态,它的用发跟dos下的cd命令基本一致。 cd .可进入上一层目录 cd -可进入上一个进入的目录 cd 可进入用户的home目录 3.4 ls ls命令跟dos下的dir命令一样,用于显示当前目录的内容。 如果想取得详细的信息,可用ls -l命令, 这样就可以显示目录内容的详细信息。 如果目录下的文件太多,用一屏显示不了,可以用ls -l |more分屏显示 。3.5 catcat通常是用来在屏幕上滚动显示文件的内容。它的格式是: catfilename3.6 find find命令用于查找文件。这个命令可以按文件名、建立或修改日期、所有者(通常是建立文件的用户)、文件长度或文件类型进行搜索。 find命令的基本结构如下: $find 其中指定从哪个目录开始搜索。指定搜索条件。表示找到文件怎么处理。一般来说,要用-print动作,显示 整个文件路径和名称。如果没有这个动作,则find命令进行所要搜索而不显示结果,等于白费劲。 例如,要搜索系统上所有名称为ye的文件,可用如下命令: $find / -name ye -print 3.7 tar tar最初用于建立磁带备份系统,目前广泛用于建立文件发布档案。可用如下方法建立tar档案: $tar cvf 例如,如果要将当前目录中所有文件存档到ye.tar中,可用如下命令: $tar cvf ye.tar *.* 要浏览档案内容,将c选项变成t。如果要浏览ye.tar档案中的内容,可用如下命令: $tar tvf ye.tar 要取出档案内的内容,将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中,可用如下命令: $tar xvf ye.tar 3.8 gzip gzip命令用于压缩文件。 例如,如果要将ye.txt文件压缩,可用如下命令: $gzip ye.txt 这样就可以压缩文件并在文件名后面加上gz扩展名,变成文件ye.txt.gz。 解压缩文件可用gzip -d命令实现: $gzip -d ye.txt.gz 这样就可以解压缩文件并删除gz扩展名。除此之外还可以用gunzip命令来解 压缩文件,效果跟用gzip -d命令一样。 旧版的tar命令不压缩档案,可用gzip压缩。例如: $tar cvf ye.tar *.txt $gzip ye.tar 则可建立压缩档案ye.tar.gz。 新版的tar可以直接访问和建立gzip压缩的tar档案,只要在tar命令中加上z 选项就可以了。例如: $tar czvf ye.tar *.txt 生成压缩档案ye.tar.gz, $tar tzvf ye.tar *.txt 显示压缩档案ye.tar.gz的内容,而 $tar xzvf ye.tar *.txt 取出压缩档案ye.tar.gz的内容。 3.9 mkdir 这个命令很简单,跟dos的md命令用法几乎一样,用于建立目录。 3.10 cp cp命令用于复制文件或目录。 cp命令可以一次复制多个文件,例如: $cp *.txt *.doc *.bak /home 将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。 如果要复制整个目录及其所有子目录,可以用cp -R命令。 3.11 rm rm命令用于删除文件或目录。 rm命令会强制删除文件,如果想要在删除时提示确认,可用rm -i命令。 如果要删除目录,可用rm -r命令。rm -r命令在删除目录时,每删除一个文件或目录都会显示提示,如果目录太大,响应每个提示是不现实的。这时可以用 rm -rf命令来强制删除目录,这样即使用了-i标志也当无效处理。 3.12 mv mv命令用于移动文件和更名文件。例如: $mv ye.txt /home 将当前目录下的ye.txt文件移动到/home目录下, $mv ye.txt ye1.txt 将ye.txt文件改名为ye1.txt。 类似于跟cp命令,mv命令也可以一次移动多个文件,在此不再赘叙。3.13 mount这个指令可以用来连接文件系统。例如,要访问光盘上的资料,假设光驱是第二个IDE口从盘,那么可以使用命令mount /dev/hdd /cdrom 把光盘内容连接到/cdrom下,在连接之前,/cdrom目录必须存在。连接后可以用umount /cdrom卸掉文件系统。linux支持多种可挂接的文件系统,例如,要挂接IDE1主盘的第二个分区上的Windows 95分区,使用命令mount /dev/hda2 /dosc -t vfat可以使用的描述符包括msdos,ext2,vfat,umsdos,iso9660,ntfs等3.14 reboot 重启命令,不必多说。 3.15 halt 关机命令,不必多说。4 实验步骤这里应用Linux的各种命令对Linux内核代码进行漫游。4.1 建立工作目录Myjob打开终端,输入下列命令:#mkdir /root/Myjob#cd /root/Myjob#pwd4.2 输入下列命令,从光盘拷贝内核的压缩包到工作目录。#cp /mnt/cdrom/linux/sourcecode/s3c2440_kernel2.4.18_r1.2.tar.bz2 /root/Myjob*由于Linux版本的更新,文件名的后半部分经常会改动,文件名由于板本的改动而产生的变化我们不会另行通知。请在输入带路径的命令前输入ls命令查看当前的文件名,可以在输入完s3c2440_kernel后使用TAB键补全,而不直接输入。本书的余下部分都遵循这个原则。4.3 解压缩内核#tar jxvf s3c2440_kernel2.4.18_r1.2.tar.bz2#ls#cd s3c2440_kernel2.4.18_rel#ls4.4 在内核中查找触摸屏驱动文件s3c2440-ts.c#find s3c2440-ts.c4.5 查看s3c2440-ts.c文件的内容#cd /root/Myjob/s3c2440_kernel2.4.18_rel/driver/char#cat s3c2440-ts.c4.6 重新压缩内核#cd /root/Myjob#tar jcvf s3c2440_kernel2.4.18_Myjob.tar.bz2 s3c2440_kernel2.4.18_rel#ls4.7 重命名s3c2440_kernel2.4.18_Myjob.tar.bz2#mv s3c2440_kernel2.4.18_Myjob.tar.bz2 s3c2440_kernel2.4.18_Myjob2.tar.bz2#ls5 实验思考5.1 单独使用tar命令和先用gzip后再用tar命令进行压缩有什么参数上的区别?5.2 比较Linux下的常用命令和MSDOS下对应的常用命令,查看两者参数的差异?实验三 Linux下的C编程辅助命令1 实验目的l 熟练运用find,grep命令定位需要修改的代码l 熟练运用vi进行代码的编辑2 实验设备l 硬件:PC机l 软件:Red Hat93 实验原理5.3 Linux下的源代码编译工具vivi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。1. vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:1) 命令行模式command mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。2) 插入模式(Insert mode)只有在Insert mode下,才可以做文字输入,按ESC键可回到命令行模式。 3) 底行模式(last line mode) 将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号等。 不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。2. vi的基本操作 1) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于命令行模式(command mode),您要切换到插入模式(Insert mode)才能够输入文字。2) 切换至插入模式(Insert mode)编辑文件 在命令行模式(command mode)下按一下字母i就可以进入插入模式(Insert mode),这时候你就可以开始输入文字了。 3) Insert 的切换 您目前处于插入模式(Insert mode),您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下ESC键转到命令行模式(command mode)再删除文字。 4) 退出vi及保存文件 在命令行模式(command mode)下,按一下:冒号键进入Last line mode,例如: l : w filename (输入 w filename将文章以指定的文件名filename保存) l : wq (输入wq,存盘并退出vi) l : q! (输入q!, 不存盘强制退出vi) 3. 命令行模式(command mode)功能键 1)插入模式 l 按i切换进入插入模式insert mode,按“i”进入插入模式后是从光标当前位置开始输入文件; l 按a进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; l 按o进入插入模式后,是插入新的一行,从行首开始输入文字。 2)从插入模式切换为命令行模式 l 按ESC键。 3)移动光标 vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母h、j、k、l,分别控制光标左、下、上、右移一格。 l 按ctrl+b:屏幕往“后”移动一页。 l 按ctrl+f:屏幕往“前”移动一页。 l 按ctrl+u:屏幕往“后”移动半页。 l 按ctrl+d:屏幕往“前”移动半页。 l 按数字0:移到文章的开头。 l 按G:移动到文章的最后。 l 按$:移动到光标所在行的“行尾”。 l 按:移动到光标所在行的“行首” l 按w:光标跳到下个字的开头 l 按e:光标跳到下个字的字尾 l 按b:光标回到上个字的开头 l 按#l:光标移到该行的第#个位置,如:5l,56l。 4)删除文字 l x:每按一次,删除光标所在位置的“后面”一个字符。 l #x:例如,6x表示删除光标所在位置的“后面”6个字符。 l X:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 l #X:例如,20X表示删除光标所在位置的“前面”20个字符。 l dd:删除光标所在行。 l #dd:从光标所在行开始删除#行 5)复制 l yw:将光标所在之处到字尾的字符复制到缓冲区中。 l #yw:复制#个字到缓冲区 l yy:复制光标所在行到缓冲区。 l #yy:例如,6yy表示拷贝从光标所在的该行“往下数”6行文字。 l p:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 6)替换 l r:替换光标所在处的字符。 l R:替换光标所到之处的字符,直到按下ESC键为止。 7)回复上一次操作 l u:如果您误执行一个命令,可以马上按下u,回到上一个操作。按多次“u”可以执行多次回复。 8)更改 l cw:更改光标所在处的字到字尾处 l c#w:例如,c3w表示更改3个字 9)跳至指定的行 l ctrl+g列出光标所在行的行号。 l #G:例如,15G,表示移动光标至文章的第15行行首。 4. Last line mode下命令简介 在使用last line mode之前,请记住先按ESC键确定您已经处于command mode下后,再按:冒号即可进入last line mode。 1) 列出行号 l set nu:输入set nu后,会在文件中的每一行前面列出行号。 2) 跳到文件中的某一行 l #:#号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。 3) 查找字符 l /关键字:先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往后寻找到您要的关键字为止。 l ?关键字:先按?键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往前寻找到您要的关键字为止。 4) 保存文件 l w:在冒号输入字母w就可以将文件保存起来。 5) 离开vi l q:按q就是退出,如果无法离开vi,可以在q后跟一个!强制离开vi。 l qw:一般建议离开时,搭配w一起使用,这样在退出的时候还可以保存文件。 5.4 Linux下的模式搜索命令(grep、fgrep和egrep)这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个函数,或是相关的词组。grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式可以是正则表达式,而fgrep却不能。该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽略大小写。这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从标准输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前加上文件名。语法:grep 选项 查找模式 文件名1,文件名2,egrep 选项 查找模式 文件名1,文件名2,fgrep 选项 查找模式 文件名1,文件名2,这组命令各选项的含义为:- E 每个模式作为一个扩展的正则表达式对待。- F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。- b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。- c 只显示匹配行的数量。- i 比较时不区分大小写。- h 在查找多个文件时,指示grep不要将文件名加入到输出之前。- l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。- n 在输出前加上匹配串所在行的行号(文件首行行号为1)。- v 只显示不包含匹配串的行。- x 只显示整行严格匹配的行。- e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。- f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。对该组命令的使用还需注意以下方面:在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则,Shell将把空格认为是命令行参数的定界符,而 grep命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。$ grep text file example用户可以在命令行上用Shell特殊字符来生成将要搜索的文件名列表。在下面的例子中,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将搜索出当前目录下所有文件中与模式匹配的行。$ grep data *特殊字符在搜索一组指定的文件时非常有用。例如,如果想搜索所有的C程序源文件中特定的模式,您可以用“*.c”来指定文件名列表。假设用户的 C程序中包含一些不必要的转向语句(goto语句),想要找到这些语句,可以用如下的命令来搜索并显示所有包含goto语句的代码行:$ grep goto *.c用户可以在命令行上键入搜索模式,也可以使用-f选项从指定文件中读取要搜索的模式。在文件中,每个搜索模式占一行。如果经常要搜索一组常见字符串时,这个功能非常有用。在下面的例子中,用户要在文件exam中搜索字符串“editor”和“create”,就把要搜索的模式放置在文件mypats 中,然后,grep命令从文件mypats中读取要搜索的模式。$ cat mypatseditorcreate$ grep -f mypats exam4 实验步骤4.1 使用vi建立Hello.c文件输入如下命令如图1所示$cd /root/Myjob$vi hello.c图14.2 按i键进入插入模式,输入如下代码#include main()printf(“Hello World!n”);pritnf(“Hello SinoSys!n”);如果2所示,然后按ESC键退出插入模式,输入wq(回车)保存文件并退出vi。图24.3 使用grep在/root中查找含有“Hello SinoSys”字符串的文件在终端中输入如下命令,如图3所示$ grep r “Hello SinoSys” /root/Myjob图35 实验思考5.5 vi的操作没有使用键盘的功能键,而使用多种模式来复用主键盘区域的英文区,主要原因是什么?5.6 grep相比DOS或windows下的查找工具,最具特色的是它可以使用正则法进行模式查找,请尝试运行正则法则对Linux源码进行一些模式查找。实验四 Gcc编译器 1 实验目的l 熟练运用GCC进行语言编程l 熟练运用vi进行代码的编辑2 实验设备l 硬件:PC机l 软件:Red Hat93 实验原理3.1 gcc简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%30%。 gcc编译器能将C、C+语言源程序、汇编程序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。 l .c为后缀的文件,C语言源代码文件; l .a为后缀的文件,是由目标文件构成的档案库文件; l .C,.cc或.cxx 为后缀的文件,是C+源代码文件; l .h为后缀的文件,是程序所包含的头文件; l .i 为后缀的文件,是已经预处理过的C源代码文件; l .ii为后缀的文件,是已经预处理过的C+源代码文件; l .m为后缀的文件,是Objective-C源代码文件; l .o为后缀的文件,是编译后的目标文件; l .s为后缀的文件,是汇编语言源代码文件; l .S为后缀的文件,是经过预编译的汇编语言源代码文件。 3.2 gcc的执行过程 虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。 命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。 3.3 gcc的基本用法和选项 在使用gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。 gcc最基本的用法是gcc options filenames 其中options就是编译器所需要的参数,filenames给出相关的文件名称。 -x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根 据约定C语言的后缀名称是.c的,而C+的后缀名是.C或者.cpp,如果 你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这 个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数 的使用。 可以使用的参数吗有下面的这些 c, objective-c, c-header, c+, cpp-output, assembler, and assembler-with-cpp. 看到英文,应该可以理解的。 例子用法: gcc -x c hello.pig-x none filename关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型例子用法:gcc -x c hello.pig -x none hello2.c-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件例子用法:gcc -c hello.c他将生成.o的obj文件 -S只激活预处理和编译,就是指把文件编译成为汇编代码。例子用法gcc -S hello.c他将生成.s的汇编代码,你可以用文本编辑器察看-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.例子用法:gcc -E hello.c pianoapan.txtgcc -E hello.c | more慢慢看吧,一个hello word 也要与处理成800行的代码-o制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈例子用法gcc -o hello.exe hello.c (哦,windows用习惯了)gcc -o hello.asm -S hello.c-pipe使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题gcc -pipe -o hello.exe hello.c-ansi关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof关键字,以及UNIX,vax等预处理宏,-fno-asm此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。-fno-strict-prototype只对g+起作用,使用这个选项,g+将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数.而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说明的类型-fthis-is-varialble就是向传统c+看齐,可以使用this当一般变量使用.-fcond-mismatch允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型-funsigned-char-fno-signed-char-fsigned-char-fno-unsigned-char这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参数)或者 signed char(后两个参数)-include file包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设定,功能就相当于在代码中使用#include例子用法:gcc hello.c -include /root/pianopan.h-imacros file将file文件的宏,扩展到gcc/g+的输入文件,宏定义本身并不出现在输入文件中-Dmacro相当于C语言中的#define macro-Dmacro=defn相当于C语言中的#define macro=defn-Umacro相当于C语言中的#undef macro-undef取消对任何非标准宏的定义-Idir在你是用#includefile的时候,gcc/g+会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他回先在你所制定的目录查找,然后再按常规的顺序去找.对于#include,gcc/g+会到-I制定的目录查找,查找不到,然后将到系统的缺省的头文件目录查找-I-就是取消前一个参数的功能,所以一般在-Idir之后使用-idirafter dir在-I的目录里面查找失败,讲到这个目录里面查找.-iprefix prefix-iwithprefix dir一般一起使用,当-I的目录查找失败,会到prefix+dir下查找-nostdinc使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头文件的位置-nostdin C+规定不在g+指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建libg+库使用-C在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的-M生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用gcc -M hello.c来测试一下,很简单。-MM和上面的那个一样,但是它将忽略由#include造成的依赖关系。-MD和-M相同,但是输出将导入到.d的文件里面-MMD和-MM相同,但是输出将导入到.d的文件里面-Wa,option此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序-Wl.option此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会连接程序.-llibrary 制定编译的时候使用的库例子用法gcc -lcurses hello.c使用ncurses库编译程序-Ldir制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然编译器将只在标准库的目录找。这个dir就是目录的名称。-O0-O1-O2-O3编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高-g只是编译器,在编译的时候,产生条是信息。-gstabs此选项以stabs格式声称调试信息,但是不包括gdb调试信息.-gstabs+此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.-ggdb此选项将尽可能的生成gdb的可以使用的调试信息.-static此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行.-share此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.-traditional试图让编译器支持传统的C语言特性3.4 gcc的错误类型及对策 gcc编译器如果发现源程序中有错误,就无法继续进行,也无法生成最终的可执行文件。为了便于修改,gcc给出错误资讯,我们必须对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医填空试题及参考答案
- 出纳个人述职报告范文(17篇)
- 洗胃训练专项考试题及参考答案
- 临床护理重点多选试题及完整答案
- 2025-2026学年山西省太原市杏花岭区三年级数学第二学期期中质量跟踪监视试题(含答案)
- 2026思想建设自查报告(3篇)
- 2026年聚合工艺操作证理论考试练习题【含答案】
- ISO 12614-12021 道路车辆液化天然气(LNG)燃料系统部件第1部分一般要求和定义标准立项发展报告
- C语言考试试题库及答案
- 2026年针灸学卫生医学高级职称(副高)考试试题及答案【面审】模拟答辩
- 2026中国智能建筑行业市场分析及发展趋势与投资前景预测研究报告
- 2026江西天然气能源江西天然气能源投资有限公司所属井冈山公司、资溪公司面向社会招聘4人考试参考题库及答案详解
- 中国融通资源开发集团有限公司物资接收、仓储人员专项招聘87人笔试备考试题及答案详解
- JGJ142-2012 辐射供暖供冷技术规程
- NB-T10935-2022除氧器技术条件
- 烟煤胶质层指数测定仪不确定度评定报告
- 染色定型车间管理制度
- 机械工程材料与热加工课程概论1-6章
- 房屋出售独家委托协议
- 费森尤斯CRRT操作流程1
- 汨罗2022小学教师招聘考试真题及答案解析
评论
0/150
提交评论