linux操作系统入门-基本知识ppt课件

收藏

编号:167789371    类型:共享资源    大小:1.26MB    格式:PPT    上传时间:2022-11-05
20
积分
关 键 词:
linux 操作系统 入门 基本知识 ppt 课件
资源描述:
1Welcome!嵌入式Linux系统培训Linux操作系统入门2一周课程安排一、Linux操作系统结构;常用的Linux Shell命令二、开发环境使用(ultraedit、nfs、samba、超级终端(wins)、minicom(linx)Shell编程实验三、编译器GCC使用;调试器GDB;项目管理工具MAKE 标准I/O开发,文件I/O操作编程四、实验:设置编译环境;文件I/O实验(包括如何实验GCC,MAKE)3Linux是什么?Linux是一种计算机操作系统和它的内核的名字。它也是自由软件和开放源代码发展中最著名的例子。4Linux是一种?nLinux是一种Unix类操作系统nUnix类?5Linux的诞生n1991年,Linus Torvalds还是芬兰赫尔辛基大学的一名学生,最初用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix中得到灵感,发誓要写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序、一个小的文件系统n这样0.0.1版本的Linux就出来了,但是他必须在有Minix的机器上编译以后才能玩,这时候的Linus已经完全“走火入魔”了,决定完全脱离Minix,于是在1991年10月5号发布了Linux0.0.2版本,这个版本已经可以运行bash(一种用户与操作系统内核通讯的软件)和gcc(GNU C编译器)了6Linux的编年史n11991年11月,芬兰赫尔辛基大学的学生Linus Torvalds写了个小程序,取名为Linux,放在互联网上。1993年,在一批高水平黑客的参与下,诞生了Linux1.0版n21994年,Linux的第一个商业发行版Slackware问世n31996年,美国国家标准技术局的计算机系统实验室确认Linux版本1.2.13(由Open Linux公司打包)符合POSIX标准n41999年起,多种Linux的简体中文发行版相继问世。国内自己创建的有Blue Point Linux、Flag Linux、Xterm Linux等,美国有Xlinux、TurboLinux等n52001年,Linux2.4版内核发布n62003年,Linux2.6版内核发布n7现在i市场上出现多种Linux发行版iiLinux广泛用于桌面系统、嵌入式系统、网络服务器系统iii众多大厂商参与Linux的开发工作,Linux可用软件越来越多7开启你的Linux旅途8第一步n如何使用Vmware打开RedHat Linuxn演示.9Linux的启动与初始化Linux Boot StopBIOSopen the powerkernel/bootlilo/grabmingettyinitshelllogin-linux perationLogon program引导启动第一个进程10第二步:登陆Linux系统n终端模式 Linux Login Password:终端提示符$#nXwindow模式Red Hat Linux release 7.3(Valhalla)Kernel 2.4.18-3 on an 1686localhost login:rootPassword:123456localhost login:rootPassword:_Last Login:Sun Sep 11 20:You have new mail.rootlocalhost root#_localhost login:sunkangPassword:_sunkanglocalhost sunkang$11Linux:登陆与退出nlogout:退出登录(exit)nreboot:重启系统nshutdown:关闭系统npoweroff:关闭系统nhalt:系统挂起 12第三步:如何启动终端n在菜单中,选择“系统设置”-”终端”13开始使用“终端”n下面将介绍的是:n1、Linux操作系统的根文件系统(目录)n2、Linux操作系统的系统文件结构n3、常用的Linux操作系统shell命令141、Linux操作系统的根文件系统nFHS:Filesystem Hierarchy StandardnFHS:规范档案目录的命名及存放标准n大多数Linux系统遵循FHSnLinux:目录&路径n目录:Directory.n路径-绝对路径例:/usr/src/linux15根文件系统n基本文件系统结构n至少含有以下目录:/dev、/proc、/bin、/etc、/lib、/usr、/tmpn最基本的应用程序,如sh、ls、cp、mv等n最低限度的配置文件,如rc.d、inittab、fstab等n设备:/dev/hd*、/dev/tty*、/dev/fd0n基本程序运行所需的库函数161、Linux操作系统的根文件系统以Redhat为例n/bin-linux常用的命令,如cp,ls,ping,mount,vi,tar,kill,grep,rpm,dd,ps,ln,gzip,cat等n/boot-启动文件,如vmlinuzn/dev-设备文件,如fd0(软盘),hda(第一硬盘),hdal,hdb,sda,sdal,cdrom(hdc),mouse(psaux),等;hd-harddisk;sd-scsin/etc-配置文件,如hosts,lilo.conf,inittab,rc,d(dir),samba/smd.conf等17根文件系统n/home,/root-每个用户在home下有一个自己的目录。-root的在/root-权限和保护n/lost+found-Lost?found!一些丢失的文件可能可以在这里找到n/lib-共享库相关文件n/mnt-mount文件系统到这个目录如cdrom,floppy18根文件系统n/var-执行中记录数据n/proc-内存文件,报告程序执行的在线动态信息-如进程id数字目录,sys,net 等 (/proc/sys/net/目录主要包括了许多网络相关的主题,例如:appletalk/,ethernet/,ipv4/,ipx/,及ipv6/。通过改变这些目录中的文件,网络管理员能够在系统运行时调整相关网络参数)n/sbin-启动时需要,系统管理员程序工具、配置等-如fsck(修复分区),lilo(安装引导程序),init(内核启动的第一个用户进程),fdisk等n/tmp-临时文件夹n/usr-用户应用程序和文件192、Linux文件系统结构应用程序应用程序存储设备存储设备RelserFSVFS文件访问请求文件访问请求文件系统文件系统EXT3设备驱动程序设备驱动程序NTFSISO9660nVirtual File System是Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口。n它提供了内核中的一个抽象功能,允许不同的文件系统共存。nVFS提供统一的接口(open,read,write.)访问不同的实际文件系统,所以Linux系统可以同时支持多种文件系统n一个文件系统通常占用一个逻辑分区20EXT2-The Second Extended File SystemEXT2文件系统的整体结构和布局启动扇区启动扇区块组块组块组块组M块组块组N超级块超级块文件系统组文件系统组描述符表描述符表块位图块位图inode位图位图inode表表数据块数据块n超级块:文件系统基本信息的描述,包括文件系统大小,状态n组描述符:描述每个块组的控制和统计信息nI节点:用于描述一个文件或目录、模式、拥有者信息、文件大小、时间标志、数据块指针21EXT3nEXT2的加强版本:EXT3nEXT3是一种日志文件系统:它会将磁盘的写入动作完整记录在磁盘的某个区域上,以免突然情况下发生不一致现象。资料有效性资料完整性tune2fs:将ext2文件系统的分区转移成ext3文件系统的分区22设备也是一个文件设备设备命名命名第一个第一个软驱软驱/dev/fd0第二个软驱第二个软驱/dev/fd1第一个第一个硬盘硬盘/dev/hda第一个硬盘第一个分区第一个硬盘第一个分区/dev/hda1第一个硬盘第二个分区第一个硬盘第二个分区/dev/hda2第一个硬盘第三个分区第一个硬盘第三个分区/dev/hda3第一个硬盘第四个分区第一个硬盘第四个分区/dev/hda4第一个硬盘第一个逻辑分区第一个硬盘第一个逻辑分区/dev/hda5第一个硬盘第二个逻辑分区第一个硬盘第二个逻辑分区/dev/hda6依次类推依次类推.第二个第二个硬盘硬盘/dev/hdb依次类推依次类推.233、常用的Linux操作系统shell命令n内核信息n关于当前内核的基本信息-uname命令:uname a(显示内核基本信息):例如:2.4.18n内核版本-major.minor.patchlevel 核心版本.主号(偶数为稳定版本).第几次的修改(从0开始)n内核源文件所在目录-内核源码通常被置于:/usr/src/linux下24目录相关的命令ncd:change directory,切换到其他目录格式:cd directory 例:#cd/usrnpwd:present working directory,显示当前路径 格式:pwd25实例n进入/usrn进入/usr/src/linux1、cd src/linux2、cd./src/linux3、cd src;cd linuxn回到/usr1、cd/usr2、cd./.(回到根目录)n进入/home1、cd./home26lsnls命令用于显示目录内容,类似DOS下的dir。nls optionsfilenamen主要参数:-a,-all:列出所有文件,包括隐藏文件;-l:使用较长格式列出信息;-m:所有项目以逗号分隔,并填满整行行宽;-R,-recursive:同时列出所有子目录层;n蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色 表示是链接文件,灰色表示是其他格式文件。ls最常使用的是ls-l。其别名为ll。27文件操作相关的命令nmkdir:make directory,创建一个文件夹-如 mkdir tempnrmdir:remove directory,删除目录(要求目录是空的)-如 rmdir temp28cp and mvncp option(可有可无)源地址 目的地址如:cp file1 file2 将文件file1复制成file2。cp file1 dir1 将文件file1复制到目录dir1下。cp/tmp/file1 file2cp r dir1 dir2 复制整个目录。nmv option 源地址 目的地址mv file1 file2 将文件file1更名为file2。mv file1 dir1 将文件file1移到目录dir1下。mv dir1 dir2 将目录dir1更改为目录dir2。29rmnrm file1删除文件名为file1的文件。rm file?删除文件名中有五个字符且前四个字符为file的所有文件。rm f*删除文件名中以f为字首的所有文件。rm r dir1删除目录dir1及其子目录下所有文件。rm rf dir1不须确认,-force(强制)30file nfile通过探测文件内容判断文件类型。nfileoption文件名n使用file命令可以知道某个文件究竟是二进制的可执行文件,还是Shell Script文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。file grapgrap:English textnfile命令不能探测包括图形、音频、视频等多媒体文件类型。31帮助命令nman:用户手册(mannual)手册的章节格式:man command man man man-S 2 readninfo:读取info版的帮助文档格式:info command info infonwhatis:从whatis数据库里找某个命令的简单描述 格式:whatis command whatis mannApropos:从whatis数据库中找某个字符串格式:apropos keyword apropos printn-help:命令参数,显示简单的用户帮助格式:command-help 32lnnln命令用来在文件之间创建链接nlnoption源文件链接名 -s:进行软链接(Symbolic Link)n链接有两种,硬链接(Hard Link)(缺省),符号链接(Symbolic Link)n硬链接指通过索引节点来进行的连接。每个文件都有一个编号,称为索引节点号(Inode Index)33lnn符号连接(Symbolic Link),也叫软连接。类似于Windows的快捷方式。实际上是一个文本文件,包括有另一文件的位置信息。如:$ln-s/usr/local/httpd/htdocs gg这样每次进入gg目录就可以访问Web服务器的文档,以后如果不再访问Web服务器的文档时,删除gg即可,而真正的Web服务器的文档并没有删除。34时间设置n修改系统时间rootdell vick#dateTue Mar 28 19:20:31 CST 2006rootdell vick#date-s“Mar 28 19:19”rootdell vick#date-s“2006-3-28 19:19”-s,表示修改日期n修改后执行clock-w 或clock-systohc到硬件时钟,也可以用hwclock命令。35Linux的ShellnShell:外壳,也就是界面nShell的作用接受输入解释接受到的输入信息输出结果36Linux的ShellnLinux下常见的Shell-Sh:Bourne shell-Bash:Bourne Again Shell,最常用-Csh:C Shell,加州大学伯克利分校,与 Bourne Shell基本兼容,但是程序设计界面有很大不同-Ksh:Korn Shell,Unix系统下最普遍的-Tcsh:C Shell的加强版-Zsh:Z Shell,最新的Shell,与Bourn Shell兼容37nbourne shellV7时发布,作者是AT&T贝尔实验室的stephen bourne,替代了thompson的sh,成为unix的缺省sh,位于bin/sh.the Boutne Again Shell(1),它们是由FSF员工Brian Fox开发的。38BASH shell特点nbash 是大多数linux系统的缺省外壳,提供以下一些服务:n补全命令行:按Tab键n输入/输出重定向:重定向用于改变命令的输入输出方向。输出重定向用于将命令的结果输入到文件中,而不是屏幕上。n输入重定向的命令是。n通配符:在bash下可以使用通配符*和?;*可以替代多个字符,而?则替代一个字符。39BASH shell特点n管道:用于将一系列的命令连接起来。也就是把前面的命令的输出作为后面的命令的输入。n作业控制:可以挂起一个正在执行的进程,并在以后恢复该进程的执行。按下Ctrl+Z挂起正在执行的进程,用bg命令使进程恢复在后台执行,用fg命令使进程恢复在前台执行。n设置/删除环境变量 设置:export 变量名=变量值#TEST=haha;export TEST 查看变量值:#echo$TEST 删除:unset 变量名#echo$TEST#unset TEST40管道符号:|n管道符号是什么?|n管道符号的作用?将一个命令的输出定向成另一个命令的输入,如:command1|command2,command1的输出将成为command2的输入n通常结合more&less使用ls-R1|morecat file1|more41启动文件/etc/rc.d/rc.local (init)/etc/profile (可设置环境变量)/.bash profile(环境变量,登录后仅一次)/.bashrc(由/.bash profile调用,每次打开新的 shell时,该文件被运行)/etc/bashrc(/.bashrc调用,所有用户)如果没有/.bash profile文件时,bash会查找 /.bash_login,如果也不存在,bash会查找/.profile文件。/.bash_logout会在用户logout时被运行,如清除屏幕和临时文件等。42Shell常用键nCtrl+H:退格nCtrl+C:中断当前程序nCtrl+Z:暂停程序,使用fg重新启动程序nCtrl+S:停止输出(STOP)nCtrl+Q:启动输出nCtrl+D:in shell log out 等同于在shell里键入exitnCtrl+L:清屏clear screennCtrl+M:回车r 0 x0DnCtrl+J:换行n 0 x0A43进程管理nps:显示系统中的进程nkill:杀掉进程nfg:将后台的进程放到前台运行nbg:将某个进程放到后台运行44ps and kill nps 查看系统中属于自己的进程。ps aux 查看系统中,包含系统内部的及所有用户的进程。(ps-aef)nkill PIDPID:利用ps 命令所查出的进程号。kill 456 终止进程号为456的进程。n在后台执行进程的方式语法:命令&例如:gcc file1.c&将编译file1.c文件的工作置于后台执行。45bg and fgn按下Ctrl+Z键,暂停正在执行的进程。nbg命令,暂停的进程置于后台继续执行。如:gcc sample_1.c(在homebcfile-progarm)ZStoppedbgnfg命令,将后台执行的进程置于前台njobs查看正在后台中执行的进程46备份与压缩n压缩工具-gzip 和gunzip:压缩&解压缩,其实是同一个文件,系统通过分辨命令名来区分是压缩还是解压缩(压缩文件,不压缩目录)(在homebcfile-progarm)#gzip sample_1.c 得到sample_1.c.gz (see if the original file.)#gunzip sample_1.c.gz得到sample_1.c47tarn将多个文件(包括目录)打包(可压缩)成一个文件。打成的包常被称为tarball。n最常用的命令tar zcvf 1.tar.gz *.gif(或1.tgz也表明是tar.gz格式)tar zxvf 1.tar.gz dir1(dir是一个目录)z:使用gzip压缩 x:解开包 c:生成包f:指定文件名 v:显示详细信息 注意:tar的选项z可以不使用48tarn对于.tar.bz2格式使用bunzip2,可以先解压为.tar格式#bunzip2 foo.tar.bz2得foo.tar#tar xvf foo.tarntar jxvf*.tar.bz2 注意:j代表bunzip249locaten通过文件名搜索文件,前提是需要通过updatedb建立索引数据库;nrootlocalhost#updatedb(需要一定的时间)n举例:要找samba.conf文件都位于哪些位置:n#locate samba.conf50whereisn用来寻找命令及其帮助文件。n比如你想知道fdisk工具放在哪里,就可以用whereis fdisk来查找;n#whereis fdiskfdisk:/sbin/fdisk/usr/share/man/man8/fdisk.8.gz51whichnwhich和where相似,只是在设置的环境变量PATH中寻找;比如;n#which fdisk/sbin/fdisk52grepngrep:在指定的文件中查找一个字符串例如:-rootbc#grep“add”*.c bar.c:int add(int x,int y)foo.c:printf(“x+y=%3dn”,add(x,y);注意:在文件所在的当前目录查找53findn根据给定的参数在指定目录中查找文件 findpath.expression-find/usr/include-name”stdio.h”-find.mtime+6 mtime-86天以前8天以内修改过的文件。+n,great than n,-n less than n,n exactly n.-find.-size+10c-size-20c 搜索文件介于10byte到20byte之间。-size nbckw54用户管理nuseradd,adduser:添加用户添加用户-useradd ahkangnpasswd:添加用户密码添加用户密码-#passwd ahkangnuserdel-#userdel ahkang ngroupadd:添加组:添加组#groupadd voipngroupdel-#groupdel voipnUsermod:修改用户名:修改用户名-#usermod G voip ahkang(在管理员身份下才可进行)(在管理员身份下才可进行)55文件系统的挂载与卸载nmount:挂载文件系统格式:mount-t fstype device mount-point例:mount-t vfat/dev/sda1/mnt/usbdisknumount:卸载文件系统格式:umount device OR umount mount-point例:umount/dev/sda1n系统启动时自动挂载文件系统:/etc/fstab56n-t typeminix,ext2,msdos,vfat(win95/98)nfs,iso9660,ntfs(winNT),hpfs(OS/2),auto(自动检测文件系统)n列出目前加载的ext2文件系统mount-t ext2n模拟加载,查看mount的执行过程,配合-v57文件系统的挂载与检查nLinux下使用光盘挂载:mount t iso9660/dev/cdrom/mnt/cdrom 卸载:umount/dev/cdrom$eject$eject-t(弹出和收回光驱)n检查与修复文件系统命令:fsck t type device 例:fsck t ext2/dev/hda258/proc文件系统n一种虚拟文件系统:内核和内核模块用来向进程(process)发送信息的机制(所以叫做/proc)n访问方式:基于文件的接口,与其他文件系统一样,只是访问的内容由内核提供,而不是由存储介质提供59/proc文件系统n用途查看计算机信息查看内核状态查看运行中的进程信息运行中改变系统设置驱动调试n查看/proc文件系统60/proc文件系统ncat /proc/cpuinfo CPUncat /proc/interrupts 中断ncat /proc/ioports 设备IO端口ncat /proc/meminfo 内存信息ncat /proc/partitions 所有设备的所有分区ncat /proc/pci PCI设备的信息ncat /proc/swaps 所有Swap分区的信息ncat /proc/versionLinux的版本号uname a 看系统内核等信息61最基本的网络管理nnetconfig:进行网络配置改动的是/etc/sysconfig/network-scripts/ifcfg-eth?nping:用于网络检测#ping nifconfig:网络配置和网络参数查看#ifconfignnetstat 查看网络状况62如果你碰到这些问题?n实际使用中需要两台机器,但是现实太残酷,只有一台配置较好的机器,怎么办?n需要同一时间使用两个操作系统,如一个Windows和一个Linux,怎么办?n如果你想安装一个不熟悉的操作系统,但是对于硬件(特别是硬盘)的操作不熟悉时,为了防止损坏数据,怎么办?n其他问题.63常用服务器nApache(外部服务器)n(/usr/local/apache/conf/目录下,三个配置文件httpd.conf,access.conf和srm.conf,来配置Apache服务器的行为.httpd.conf提供了最基本的服务器配置,是对守护程序 httpd怎么样运行的技术描述;srm.conf是服务器的资源映射文件)nFTPnSambanNFS SSHD(网络文件系统)nTelnetdnDHCPnNamednSendmail64如何配置文件共享服务(Samba)n(1)检查Samba服务是否打开?65n点击系统设置,选择服务器设置,最后选择服务。n检查samba是否打开,如勾上,就代表打开了。如没有就把smb勾上,再点击“重启”。66如何打开tftp服务67如何 打开NFS服务(网际文件共享)n如samba68软件安装1.获取源码包2.配置编译选项3.编译4.安装 通常软件会给出自己的安装说明。tar xvfz aaa.tar.gz;cd aaa;./configure;make;make install69RPMnRPM是Redhat Package Manager的缩写,是由RedHat公司开发的软件包安装和管理程序。nRPM虽然是为Linux而设计的,但是它已经移植到 SunOS、Solaris、AIX、Irix等其它UNIX系统上了。70RPM的使用n两种类型的RPM包src rpm与二进制rpm,前者含有项目的源代码,后者主要为项目的可执行程序。如:tftp-0.28-2.src.rpm tftp-0.28-2.i386.rpm项目名-版本号-修改次数.rpm包类型.rpm71rpm命令的使用nrpm命令的基本模式安装:rpm i 查询:rpm q验证:rpm V删除:rpm e制作:rpm b一般选项:-v 显示信息-h 用“#“显示完成的进度-vv 显示调试信息72常用的命令形式以tftp软件包tftp.-0.28.2.i386.rpm为例n安装一个软件包rpm-ivh tftp-0.28-2.i386.rpmn卸载一个软件包rpm e tftpn查询一个包内的信息rpm qiq tftp-0.28-2.i386.rpmn查询一个包内有哪些文件rpm qlq tftp-0.28-2.i386.rpm73常用的命令形式n查询一个包是否被安装rpm q tftpn查询一个被安装包的信息rpm qi tftp rpm ql tftpn查询一个包是否被正确安装rpm V tftpn查询某个文件是被哪个包安装的rpm qf usr/bin/tftp7475参考资料nLinux一句话精彩问答nLinux权威指南第四版,MATT Welsh等著,洪峰译n精通LinuxStan Kelly-Bootle著,电子工业出版社nUnix入门与提高徐锦波 朱文章,清华大学出版社nLinux入门到精通Arman Danesh著 电子工业出版社nRPM命令大全http:/ 毛德操/胡希明 浙江大学出版社nUnix环境高级编程 Richard Stevens 机械工业出版社nUnix网络编程卷一套接口API和X/Open传输接口APIRichard Stevens 清华大学出版社nUnix网络编程卷二 进程间通讯Richard Stevens清华大学出版社76Thanks!谢谢 谢谢 !77vi主讲老师:邓耀华78演示n用vi写一个“hello world”n过程vi hello.ciinput some c text按ESC键:wq79Vi与VIMn什么是Vi&VIM?Vi:“Visual”,操作过程中可以立即看到结果VIM:“Vi Improved”,与Vi兼容,更适于程序员使用在很多发行版中,VIM已经替代了Vi80启动和退出n如何启动和退出vi&vim?启动:vioptionsfilename:w 将编辑缓冲区的内容写入文件:wq 保存文件并退出:w!强行写入。:q!强行退出vi,不保存修改的内容w:write,q:quite!重新编辑,放弃缓冲区里的内容81编辑与非编辑模式n进入vi的初始模式是非编辑模式(操作模式)可以移动光标,删除、复制和粘贴内容n如何进入编辑模式?在非编辑模式下输入i或或a或或o可以进入编辑模式(还有其他一些键)。n如何回到操作模式按ESC82Vi的使用n新建文件:vi 文件名n编译:gcc o hello(要输出的文件名)输出:./文件名 例如./hello83命令模式n如何进入命令模式在操作模式下,输入:或/或?进入该模式,可以实现查找替代内容,读取,存档,退出等功能;n如何退出命令模式执行命令即自动退出命令模式,回到操作模式。84模式之间的转换/,?,:ESCi,I,a,Ar,R,o,O编辑模式编辑模式指令列命令模式指令列命令模式操作模式操作模式85编辑方式a将输入文本插入在光标之后(append)A将输入文本插入在当前行的行尾i将输入文本插入在光标之前(insert)I将输入文本插入在当前行的开始o 将在当前行的下一行处打开一新行(open)O将在当前行的上一行处打开一新行r 替换当前字符,不需按ESC。(replace)R 从当前字符开始进行替换,至ESC键为止。86剪切、复制、粘贴n如何剪切一行?dd (delete)n如何复制一行?yy (yank)n如何粘贴?p或者P (paste)n剪切和复制n行?ndd nyy87有很多细节.n如以y与Y命令为例yy 复制当前行;(*)nyw复制从当前字符开始的n个字;(*)ny$复制从当前字符开始的n行字符;(*)Y与y$同义;y)复制到下一句的开始:y复制到下一段的开始;nyy复制从当前行开始的n行;(*)y 回车复制两行;(*)88光标的定位 或k向上移一行 或j向下移一行 或h左移一个字符 或l右移一个字符CTRL+f 向前(上)移动一满屏幕(forward)CTRL+b 向后(下)移动一满屏幕(backward)CTRL+d 向前(上)移动半屏幕(down)CTRL+u 向后(下)移动半屏幕(up)0 移到当前行的开始$移到当前行的结尾回车符移到下一行的开始可在命令前加入数字n作为前缀,使相应命令执行n次。89光标的定位nG使光标定位在第n行。gg光标移动到文件的开头G光标移动到文件的结尾:0光标移动到文件的第1行:n光标移动到文件的第n行:$光标移动到文件的最后一行90回顾n如何由编辑模式进入一般模式?-按ESCn如何移动到一行的开始和结尾?-在一般模式下按0和$n如何移动到文档的开头和结尾?-移动到开头gg或:1-移动到结尾G或:$91回顾n如何向前或向后翻一页?-Page Down/Page Up-Ctrl+f/Ctrl+bn检索和替换的命令格式?-:addrs/s1/s2/optionn如何undo和redo-u,ctrl+r92参考文献n入门学习Vim Tutor(运行vimtutor命令)n最快捷的帮助Online HelpnDoc:-Vim User ManualnWebsites:-VIM homepagehttp:/www.vim.org-水木社区VIM版93谢谢 谢谢 !94Welcome!Linux 下的C/C+编译器主讲老师:邓耀华95GCC编译器96示例great.c#includevoid main(void)printf(“hello,how are youn”);vicknec gcc-lab$gcc o hello hello.cgreat.c:In functionmain:great.c:3:warning:return type of main is not int97GCC nGCC是什么?-GCC:GNU Compiler Collection;-GCC支持多种硬件平台和操作系统,能编译多种语言 (C,C+,Java,Ada95,Objective C,.ect);-GCC与G+的关系:GCC用于编译多种语言编写的程序,主要是C;G+用于编译C+程序,以GCC为基础,编译过程中加入了C+的支持库,参数与GCC基本一致;可以利用GCC编译C+程序,但是需要在参数中加入引用的C+库,比如;libstdc+(如gcc o out-lstdc+main.cc)。98编译器与库PreprocessorCompiler前端前端后端后端OptimizerAssemblerLinker.o.sa.out.cC预处理预处理汇编汇编优化优化语法语义分析语法语义分析代码生成代码生成链接链接GCC编译C源码步骤:预处理-编译-汇编-链接99后缀n.c C源代码n.hC头文件n.o目标代码(obj)n.s汇编代码文件nC+文件-file.hh,file.HC+头文件-file.C,file.cc,file.cxx等C+源文件100选项n-E输出预处理结果(输出终端)n-S 输出汇编代码(great.s)n-c输出目标代码(great.o)n-o file 输出名为file的可执行文件名(缺省为a.out)n-O O2 优化编译n-g:产生可用于调试的输出101示例ngcc o main I./include-DDebug g main.c 输出文件输出文件 头文件搜索目录头文件搜索目录 定义宏定义宏 用于调试用于调试 源文件源文件102预处理(Pre-processing)n在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项”-E”进行查看。n用法:#gcc-E hello.c-o hello.in作用:将hello.c预处理输出hello.i文件。103nroot#gcc-E hello.c-o hello.iroot#lshello.c hello.iroot#vi hello.in#1 hello.c#1#1#1 hello.c#1/usr/include/stdlib.h 1 3#25/usr/include/stdlib.h 3#1/usr/include/features.h 1 3#291/usr/include/features.h 3#1/usr/include/sys/cdefs.h 1 3#292/usr/include/features.h 2 3#314/usr/include/features.h 3#1/usr/include/gnu/stubs.h 1 3#315/usr/include/features.h 2 3#26/usr/include/stdlib.h 2 3#3 hello.c 2nvoid main(void)printf(hello world!rn);104编译阶段(Compiling)n第二步进行的是编译阶段,在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。n用户可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码 n用法:root#gcc S hello.i o hello.sn作用:将预处理输出文件hello.i汇编成hello.s文件 105nrootrichard hello-gcc#lsnhello.c hello.i hello.sn如下为hello.s汇编代码nrootrichard hello-gcc#vi hello.s n.file hello.c.section .rodata.LC0:.string hello world!rn.text.globl main.type main,functionmain:pushl%ebpmovl%esp,%ebpsubl$8,%espandl$-16,%espmovl$0,%eaxsubl%eax,%espsubl$12,%esppushl$.LC0call printfaddl$16,%espmovl$0,%eaxleaveret.Lfe1:.size main,.Lfe1-main.ident GCC:(GNU)3.2.2 20030222(Red Hat Linux 3.2.2-5)106汇编阶段(Assembling)n汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码.n选项-cn用法:root#gcc c hello.s o hello.on作用:将汇编输出文件test.s编译输出test.o文件。root#gcc-c hello.s-o hello.oroot#lshello.c hello.i hello.o hello.s107链接阶段(Link)n在成功编译之后,就进入了链接阶段。n无选项链接n用法:root#gcc hello.o o hello.exen作用:将编译输出文件hello.o链接成最终可执行文件hello.exe。nroot#lsnhello.c hello.exe hello.i hello.o hello.s108n运行该可执行文件,出现正确的结果如下。nrootlocalhost Gcc#./hellonHello World!n在这里涉及到一个重要的概念:函数库。n程序中并没有定义”printf”的函数实现,且在预编译中包含进的”stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实现”printf”函数的呢?n系统把这些函数实现都被做到名为libc.so.6的库文件中去了,在没有特别指定时,gcc会到系统默认的搜索路径”/usr/lib”下进行查找,也就是链接到libc.so.6库函数中去,这样就能实现函数”printf”了,而这也就是链接的作用。109n你可以用ldd命令查看动态库加载情况:nroot#ldd hello.exenlibc.so.6=/lib/tls/libc.so.6(0 x42000000)n/lib/ld-linux.so.2=/lib/ld-linux.so.2(0 x40000000)110与库和路径相关选项n-l name 链接库文件名为libname.a或libname.so的库n-I dir 在dir这个目录寻找被include的文件n-L dir在dir这个目录寻找被-L的库111Thanks!谢谢 谢谢!112Makefile主讲老师:邓耀华113想一想n一个工程含有20个.c文件,18个.h文件,每次改完程序,比如说改动了一个头文件1.h,重新将20个文件编译一次,还是说只编译含有1.h的那个文件?n如果选前者,当工程增加到100个文件,每编译一次等待的时间是否可以容忍?n如果选后者,要记住哪个.c包含了1.h,如果记漏了,会出现什么情况。114make和makefile n在shell的提示符号下,键入“make”,则它会到当前的目录下先后找寻“makefile”和”Makefile”文件,并按该文件所记录的规则执行相应的动作。nmake与makefile 的作用自动化:一条命令均可灵敏:只涉及新变动的部分管理作用:管中窥豹115一个简单的makefilenCC=gcc (定义变量“CC”,将gcc赋值给CC)nfoo:foo.c(规则)$(CC)o foo foo.c(这一行,必须使用一个tab字符,$:应用变量)n完成编译,保存为makefile,在shell命令下输入make命令即可使用myprog:foo.o bar.ogcc foo.o bar.o o myprogfoo.o:foo.c foo.h bar.hgcc c foo.c o foo.obar.o:bar.c bar.hgcc c bar.c o bar.o116makefile基本内容1、解释与续行任何以“#”为开头的文字皆为解释,需要续行时键入字符,然后紧跟回车。2、变量,或宏(variable or macro)如:CFLAGS=-Wall O g3、规则,由目标、依赖和命令组成。target.:prerequisites(依赖).(这里必须按Tab键)command.这里必须是一个这里必须是一个tab键导致的空白键导致的空白。117make的行为准则1、make把第一个目标做为其最终目标。如果在make调用时指定目标,就以指定的目标为最终目标,如make clean。然后处理含有这个目标的规则。2、处理规则,如果规则的目标不存在或存在但比依赖中的某个旧,则执行规则中的命令。注意注意!在查看目标是否存在或查看依赖是否比当前新在查看目标是否存在或查看依赖是否比当前新之前,先看看之前,先看看依赖中的每一项依赖中的每一项,本身是不是某条规本身是不是某条规则的目标则的目标,如果是,如果是,先处理那条规则先处理那条规则。118一个简单的makefilenmake 把第一个目标myprog做为其主要目标1、比较比较myprog的第一个依赖的第一个依赖foo.o是否比是否比myprog新新,比较之前,比较之前,先先查找查找foo.o是否为其它规则的目标是否为其它规则的目标。2、找到关于、找到关于foo.o的规则的规则,该文件的,该文件的依赖文件是依赖文件是foo.c,foo.h和和bar.h3、再找这些、再找这些依赖是否为别的规则的目标依赖是否为别的规则的目标,找不到,开始检查这些依,找不到,开始检查这些依赖文件赖文件是否比是否比foo.o新新。如果这些文件中任何一个的修改时间。如果这些文件中任何一个的修改时间比比foo.o的新,命令的新,命令gcc o foo.o foo.c将会执行将会执行,从而,从而更新文更新文件件foo.o。如果找不到,则不动作。如果找不到,则不动作。4、处理第二个依赖、处理第二个依赖bar.o.5、处理完处理完foo.o和和bar.o,然后,然后比较看是否比比较看是否比myprog新新。如。如果果myprog不存在,或者存在但比文件不存在,或者存在但比文件foo.o或或bar.o中中的任何一个旧,则执行的任何一个旧,则执行gcc foo.o bar.o o myprog。如果不新,。如果不新,不动作。不动作。119使用变量替换OBJS=foo.o bar.oCC=gccCFLAGS=-Wall O g(-o-o1-o2-o3表示优化的级别,-o是最小,-o3最高)myprog:$(OBJS)$(CC)$(OBJS)o myprogfoo.o:foo.c foo.h bar.h$(CC)$(CFLAGS)c foo.c o foo.obar.o:bar.c bar.h$(CC)$(CFLAGS)c bar.c o bar.o(先编译bar文件,)等效于:gcc Wall o g c bar.c o bar.o120使用内建变量n$当前规则的目标n$当前规则的第一个依赖n$当前规则的所有依赖n$?当前规则中所有比目标新的依赖n$*stem which an implicit rule matchesfoo.o:foo.c foo.h bar.h$foo.o$foo.c$foo.c foo.h bar.h$?bar.h(假设只改了bar.h)121使用内建变量OBJS=foo.o bar.oCC=gccCFLAGS=-Wall O g(所有警告信息;优化;调试)myprog:$(OBJS)$(CC)$-o$(当前规则的目标,表示输出的是myprog)foo.o:foo.c foo.h bar.h$(CC)$(CFLAGS)c$-o$bar.o:bar.c bar.h$(CC)$(CFLAGS)c$-o$122谢谢 谢谢!123WelcomeGDB主讲老师:邓耀华124GDB概述nGDB(GNU Debugger),是Linux/Unix下强大的程序调试工具。-在被监控的环境下运行程序-可以为程序设置断点,使程序运行期间暂停-检查程序的运行状态-动态改变程序的运行环境n很多图形调试工具诸如Data Display Debugger(DDD)是使用gdb作为后台来工作的。125GDB使用基础n编译程序编译选项中加入-g参数,并且不要使用优化参数-O或-O2如:gcc g exel.c o exeln启动GDB方法1:gdb exel方法2:gdb(gdb)file exel方法n:.n启动程序:利用r或run命令n如何退出gdb(gdb)quit126断点n-设置断点break funclbreak 35break test.c:18break test.c:func2n查看中断信息info breakn条件中断break 5 if i=7 带条件中断condition 1 i=9 更改条件condition 1清除条件127vicknec gdb_lab$cat moon.c n#includevoid goto_the_moon(int ary)int i;for(i=0;i100;i+)aryi=i;int main()int i,ary100;for(i=0;i10;i+)printf(“i=%drn”,i);goto_the_moon(ary);return 0;vicknec gdb_lab$gcc moon.c g o moon128GDB调试方法n单步调试程序step:单步调试next:单步调试,但不进入要调用的函 数until:运行程序直到退出循环体finish:运行程序直到从函数返回return value:停止函数运行,返回valuestepi/nexti:机器指令的单步调试129 vicknec gdb_lab$gdb moon-q (gdb)break 12 Breakpoint 1 at 0 x80484b0:file moon.c,line 12.(gdb)break goto the_moon Breakpoint 2 at 0 x8048466:file moon.c,1ine 5 (gdb)r Starting program:/home/vick/aka/gdb_lab/moon Breakpoint 1,main()at moon.c:12 12 printf(“i=drn”,i);(gdb)n i=0 11 for(i=0;i10;i+)(gdb)n Breakpoint 1,main()at moon.c:12 12 printf(“i=drn”,i);(gdb)130(gdb)clear 12Deleted breakpoint 1(gdb)info breakNum Type Disp Enb Address What 2 breakpoint keep y 0 x08048466 in goto_the_moon at moon.c:5(gdb)ni=111 for(i=0;i10;i+)(gdb)untili=2i=913 goto the moon(ary);(gdb)131(gdb)c ContinuingBreakpoint 2,goto_the_moon(ary=oxbffff8b0)at moon.c:5 5 for(i=0;i100;i+)(gdb)n6 aryi=i;(gdb)fin Run till exit from#0 goto_the_moon(ary=oxbffff8b0)at moon.c:6 x080484db in main()at moon.c:13 13 goto_the_moon(ary);(gdb)n14 return 0;(gdb)132vicknec gdb_lab$gdb moon-q(gdb)break l3 Breakpoint 1 at 0 x80484cc:file moon.c,line 13.(gdb)r Starting program:/home/vick/aka/gdb_lab/moon Breakpoint 1,main()at moon.c:1313 goto_the_moon(ary);(gdb)s goto_the_moon(ary=0 xbffff8b0)at moon.c:5 5 for(i=0;i100;i+)(gdb)return 3 Make
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:linux操作系统入门-基本知识ppt课件
链接地址:https://www.zhuangpeitu.com/article/167789371.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!