资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。谢谢,LINUX高级用户教程,3月,第1页,LINUX高级用户教程主要章节,LINUX概况,LINUX开发环境,LINUX进程环境和空间管理,LINUX进程管理,LINUX下信号,LINUX下计时,第2页,LINUX用户教程主要章节,文件操作,网络编程,LINUX进程间通信,系统配置和管理,第3页,LINUX概述,LINUX历史、现实状况和未来,LINUX主要特点,LINUX遵照一些标准,怎样取得LINUX在线帮助,LINUX,经常问到一些问题,第4页,LINUX开发环境,LINUX下C编译器,GNU Make,程序中库函数和头文件,编程格调,LINU,X下目标代码格式和相关命,令,第5页,LINUX进程环境和空间管理,LINUX进程环境,用户环境变量,用户程序空间布局,用户动态空间分配,空间分配相关接口,第6页,LINUX进程管理,Fork(),Exec,Wait,Exit,第7页,LINUX下信号,信号起源和种类,进程对信号响应,LINUX下信号定义,信号发送,信号安装,信号集合和集合操作,信号编程注意事项,实例,第8页,LINUX计时,LINUX中时间,Shell,计时方法,第9页,文件操作,文件类型,文件属性和操作,目录操作,符号链接和IO操作,系统调用接口,文件流操作,IO,相关库接口,第10页,网络编程,套接口,网络分层协议,网络通信模型,LINUX下惯用网络通信接口,网络通信实例,第11页,进程间通信,进程通信类型,基于管道通信和FIFO通信,消息队列,信号量,共享内存,第12页,系统管理(一),系统安装,GRUB开启引导器,开启过程和系统服务,开启状态和服务配置,用户和组管理,进程管理,软件包管理,第13页,系统管理(二),网络配置,文件系统设置,LINUX下各种设置使用,远程登陆,FTP、NFS配置,Samba,安全设置,第14页,第一章 LINUX概况,第15页,为何选择LINUX,软件模式,当今软件按照其提供方式和是否赢利能够划分为三种模式,即:商业模式,(commercial software),、共享模式,(,shareware,)和自由软件,(freeware,或,free software),。,商业软件,由开发者出售拷贝并提供软件技术服务,用户只有使用权,但不能进行非法拷贝、扩散和修改;,共享软件,由开发者提供软件试用程序拷贝授权,用户在使用该程序拷贝一段时间之后,必须向开发者缴纳使用费,开发者则提供对应升级和技术服务;,自由软件,则由开发者提供软件全部源代码,任何用户都有权使用、拷贝、扩散和修改这些软件,同时有义务将自己修改过程序代码公开。,第16页,自由软件两层含义,能够无偿提供给任何用户使用;,它源码公开和能够自由修改。所谓能够自由修改指用户能够对公开源码进行修改,以使自由软件愈加完善,还能够对自由软件进行修改基础上开发上层软件。,第17页,自由软件诞生,UNIX从二十世纪七十年代诞生发展到八十年代,已经形成了多个分支(,插图,),,Unix,在商业上面问题让许多对于,Unix,喜好者感到相当忧心,其中一个就是有名,Richard M.Stallman,先生,他认为:,Unix,是一个相当好操作系统,在这个系统上,大家能够将自己所学贡献出来,那么这个系统将会愈加优异。,让自己发展良好软件让大家来使用就是最大高兴,而且因为每个人工作环境,(,指软硬件平台,),可能都不太相同,有了,Open Source,概念,大家都能够分享这一份心得!你程序将有很多人能够帮忙检验,将使得,Unix,社群更佳茁壮。,于是为了理想,,Stallman,在,1984,年创建了,GNU,(,GNU,是,“GNUs Not UNIX”,缩写)与,自由软件基金会,(Free Software Foundation,FSF),,并创作了许多自由软件供大众来使用。,其作品以自由,(free),GNU GPL,授权模式提供。,第18页,自由软件带来好处,free,软件给使用者节约了相当一笔费用;,Internet,普及,使人们很轻易下载开放源代码软件,很轻易把开发、改进新结果上网交流。使软件开发由过去集中在专门机构里进行变为分散在网络上由许许多多独立开发者协作完成。它能够调动更多人主动性,发挥更多人创造性,而且受到更多人实践检验,因而能够更加快地完成和完善。这种方法不但比传统方式开发软件更为稳固,而且能够取得更多支持和更加快更新。,LINUX,一句名言:“,BUG就像影子一样,只会出现在阳光照不到角落中,”,第19页,什么是LINUX,LINUX,是一个操作系统,同时它是一个自由软件,是,free,、源代码开放,设计它目标是建立不受任何商品化软件版权制约、全世界都能自由使用,UNIX,兼容操作系统产品。,经典,Linux,发行版包含,Linux,内核,但还包含许多应用程序和工具。总说来,,Linux,发行版中出现许多系统级和用户级工具都来自自由软件基金会(,Free Software Foundation,),GNU,项目。,Linux,内核和,GNU,工具套件都在,GNU,通用公共许可证(,GNU General Public License,,,GNU GPL,)下发行。,第20页,为何使用LINUX,LINUX,是一套含有,UNIX,全部功效,free,操作系统,用户能够无偿得到它及源码并取得大量应用,而且能够任意修改和补充他们,对于用户学习、了解,UNIX,操作系统内核非常有益。,LINUX,是当前唯一能够无偿取得、为,PC,机及其它平台上多个用户提供多任务、多进程功效操作系统,这是人们要使用它主要原因。,LINUX,让我们从许可证限制中解脱出来,而使用含有许可证商业软件就意味着时时刻刻都得对许可证许多条例负责。,Linux,有非常广泛平台适应性。它在基于,Intel,企业,x86(,也包含,AMD,、,Cyrix,、,IDT),计算机、基于,Alpha,计算机,以及苹果、,Sun,、,SGI,等企业计算机上都有对应公布版本,甚至在,AS/400,这么机器上都能找到对应版本。,Linux,还能够在许多,PDA,和掌上电脑以及嵌入式设备上运行。,已经有非常多应用程序能够在,Linux,上运行,大多数为,SCO Unix,开发应用程序都能在,Linux,上运行,(,借助于,iBCS,软件包,),,甚至还比在,SCO Unix,上运行速度更加快。,LINUX,之所以大受欢迎,不但仅因为它是无偿,更主要是,linux,含有极其丰富功效,,LINUX,操作系统不但能够用于服务器,其桌面环境也相当不错。,第21页,LINUX历史,在,80,年代末,以,intel,主导,x86,系统架构个人计算机大行其道!但在此时,人们使用大多还是需要吃很多系统资源,DOS,系列或其它操作系统。,芬兰郝尔辛基大学,(Helsinki),Linus Torvalds,学生做了件不寻常事情!,Linus,手边有个,Minix,系统,,他对这个操作系统有相当兴趣!开始了把,Unix,操作系统移植到个人计算机,(X86,架构,),尝试,基于,Stallman,提倡,Open Source,,经过有心读取,Unix,关键,而且去除较为繁复关键程序,将他改写成能够适合用于普通个人计算机,x86,系统上面,到了,1991,年,他终于将,0.02,版,hobby,放到网络上面供大家下载,而且因为,hobby,受到大家必定,相当多朋友一起投入这个工作中!终于到了,1994,年将第一个完整关键,Version 1.0,公布!,LINUX一个主要里程碑,第22页,LINUX历史(续),因为,Linux kernel,发展是由虚拟团体所达成,大家都是透过网络取得,Linux,关键原始码,经由自己精心改造后再回传给,Linux,社群,进而一步一步发展完成完整,Linux,系统,至于,Torvalds,先生是这个集团中发起者。因为这个群策群力缘故,,Torvalds,先生将,Linux,定为一样造福大家,GNU,授权模式!,企鹅起源:,1994,年发表,Linux,正式关键,1.0,时候,大家要,Linus Torvalds,想一只吉祥物,怪怪,Torvalds,突然想到小时候去动物园被一只企鹅追着满地打滚还被咬了一口!既然想不到其它吉祥物了,干脆就以这支企鹅来当吉祥物算了!所以,当前我们经常看到这一只企鹅就是这么来!,第23页,LINUX发展现实状况和趋势,诞生了十多年,LINUX,应用越来越广泛,从桌面到服务器,从操作系统到嵌入式系统,从零碎应用到整个产业形成。,因为,WINDOW,影响,人们对,LINUX,使用还普遍比较生疏,间接影响,LINUX,发展,伴随,LINUX,应用范围扩大,,LINUX,热正在形成,范围在不停扩大,并逐步走出了学校、研究机构,向普及化方向发展;,在LINUX,应用开发、嵌入式系统开发两大发展方向上,不论国际、国内都急需要大量专业人才。,Linux,将会朝着完善功效、提升效率方向发展,包含允许用户创建线程、增加实时处理功效、开发适合多处理机体系结构版本;,LINUX,桌面系统正在形成,并逐步会在一些领域取代,WINDOW,系统;,今后操作系统只有:WINDOW、UNIX和LINUX?,第24页,LINUX,系统特点(一),开放性:,是指系统遵照世界标准规范,尤其是遵照开放系统互连(,OSI,)国际标准。凡是遵照国际标准所开发硬件和软件,都功效彼此加入,可方便实现互连。另外,源码是开放和,free,,使得,LINUX,取得非常方便,而且节约费用。用户能够依据自己需要对部件进行混合搭配,建立自定义扩展。,多用户:,是指系统资源能够被不一样用户各自拥有使用,即每个用户对自己资源(文件、网络、空间)有特定权限,互不影响。,多任务:,系统能够同时执行多个程序,而且各个程序运行相互独立。,LINUX,系统调度每一个进程平等地访问处理器。,出众速度性能,:,LINUX,能够理想运行数月、多年而无须重新开启,与,NT,相比,该特点尤其突出。,LINUX,不大在意,CPU,速度,它能够把处理器性能发挥到极限,用户会发觉:影响系统性能提升限制原因主要是系统总线和,IO,性能。,第25页,LINUX,系统特点(二),良好用户界面,:,LINUX,向用户提供了三种界面:用户命令界面,系统调用界面和图形用户界面。,丰富网络功效,:,LINUX,是在,Internet,基础上产生并发展起来,所以,完善内置网络是,Linux,一大特点。,Linux,在通信和网络功效方面优于其它操作系统,可靠系统安全,:,LINUX,采取了许多安全技术办法,包含对读写进行权限控制、带保护子系统、审计跟踪、关键授权等,为网络多用户环境提供了必要安全保障。,良好可移植性,:,LINUX,是一个可移植操作系统,能够从微型计算机到大型计算机任何环境和任何平台下运行。可移植性为运行,LINUX,不一样计算机平台与其它任何机器进行有效通信提供了伎俩,不需要增加特殊和昂贵通信接口。,含有标准兼容性,:,LINUX,是一个与,POSIX,(,Portable Operating System Interface,)相兼容操作系统,它所组成子系统支持全部相关,ANSI,、,ISO,、,IETF,和,W3C,业界标准。,第26页,LINUX,系统组成,LINUX,普通有四个部分组成:内核、,Shell,、文件系统和应用程序。内核、,Shell,和文件系统组成了基本操作系统结构。它们使得用户能够运行程序,管理文件并使用系统。,LINUX,内核:内核是系统“心脏”,是运行程序和管理像磁盘和打印机等硬件设备关键程序。,Linux,内核主要由存放管理、进程管理、设备管理、进程间通信等几部分组成。,LINUX Shell,:,Shell,是系统用户界面,提供了用户与内核进行交互操作一个接口。,LINUX,文件系统:文件系统是存放在磁盘等存放设备上组织方法,,LINUX,文件系统实际上也是内核一个主要部分。,LINUX,支持当前流行各种文件系统,如:,EXT2,、,EXT3,、,FAT,、,VFAT,、,IISO9660,、,NFS,、,JFS,、,XFS,、,SMB,等。,LINUX,应用程序:标准,LINUX,系统都有一套称为应用程序程序集合,包含文本编辑器、编程语言、,X Window,、办公套件、,Internet,工具、数据库等。,第27页,LINUX,内核版本,内核版本是,Linus,领导下开发小组发出系统内核版本号。,内核版本有三个数字:,r.x.y,r,:当前公布,Kernel,主版本号,x,:,Kernel,次版本号,偶数:稳定版本;奇数:开发中版本,y,:错误修补次数,对于初学者,相关内核要记住最主要事是:带奇数内核版本(即,2.3,、,2.5,、,2.7,等)是试验性开发版内核。稳定发行版内核版本号是偶数(即,2.4,、,2.6,、,2.8,等)。,当前,LINUX,内核最新版本为,2.6,,,03,年底公布。,第28页,LINUX,发行版本,发行版本是一些组织和厂家将,LINUX,系统内核与应用软件和文档包装起来,并提供一些安装界面和系统管理工具一个软件包集合。其中,,Linux,发行版中出现许多系统级别和用户级别工具都来自自由软件基金会(,Free Software Foundation,),GNU,项目。当前,LINUX,发行版本已经有,300,余种,而且还在不停增加。相对于内核版本,发行套件版本号伴随公布者不一样而不一样,与系统级内核版本号是相对独立。,第29页,国际著名一些,LINUX,发行版本,Red Hat,最著名,Linux,服务提供商,,Intel,、,D ell,等大企业都对其有较大投资,该企业前很快收购了开放源代码工具供给商,Cygnus,企业。,Slack Ware,历史比较悠久,有一定用户基础。,SUSE,在欧洲著名度较大。,Turbo Linux,在亚洲,尤其是日本用户较多。该企业在中国推出了,TurboLinux 4.0,、,4.02,和,6.0,汉字版,汉化做得很出众。,Debain,完全由计算机兴趣者和,Linux,小区计算机高手维护,Linux,公布版本。,第30页,国内著名一些,LINUX,发行版本,Linux,进入中国后,在我国计算机界引发了强烈反响,最近两年,也出现了许多汉化,L i n u x,公布版本,影响较大有以下几个:,XteamLinux,北京冲浪平台企业推出产品,中国第一套汉化,Linux,公布版本。,BluePoint,1999,年底正式推出产品,内核汉化技术颇受瞩目。,RedflagLinux,中国科学院软件研究所和北大方正推出,Linux,公布版本。,第31页,LINUX支持标准,LINUX,符合,POSIX 1003.1,标准,,,POSIX 1003.1,标准定义了一个最小,Unix,操作系统接口,任何操作系统只有符合这一标准,才有可能运,行,Unix,程序。,为了使Unix System V和BSD上程序能直接在 Linux上运行,Linux还增加了部分System V和BSD系统接口,使Linux成为一个完善Unix程序开发系统。,第32页,LINUX遵照标准说明,POSIX,:该标准最初由,IEEE,(电气和电子工程师协会)开发标准族,部分已经被,ISO,接收为国际标准。,POSIX.1,和,POSIX.2,分别定义了,POSIX,兼容操作系统,C,语言系统接口,以及,shell,和工具标准。这两个标准是通常提到主要标准。,SVID,:,System V,接口描述。,System V,接口描述(,SVID,)是描述,AT Unix System V,操作系统文档,是对,POSIX,标准扩展超集。,XPG:X/Open 可移植性指南。X/Open 可移植性指南(由 X/Open Company,Ltd.出版),是比 POSIX更为普通标准。X/Open 拥有 Unix 版权,而 XPG 则指定成为 Unix 操作系统必须满足要求。,第33页,LSB,(,Linux Standards Base,),Linux,标准基础,LSB推出背景,因为,LINUX,发行商众多,为了防止不一样发行商对程序兼容性等问题带来影响,由四家领袖级,Linux,提供商发起了成立了,LINUX,协会工程,UnitedLinux,。致力于提供改进公共代码库,提供特定于,Linux,工业规范和认证计划,,Linux,标准基础(,Linux Standards Base,,,LSB,)规范意在消除各,Linux,分发版之间许多区分,其目标是让软件厂商更轻易地制作能够在许多企业不一样版本开源软件操作系统上运行程序,,支持,Linux,应用程序市场,。,第34页,LSB,细则,LSB,认证是由,Free Standards Group,提供独立于,Linux,版本发行商第三方认证,确保产品符合面向,Linux,发行套件及支持,Linux,应用程序业界标准规格。,LSB,认证内容包含,公共规格(,gLSB),和,特殊架构规格(,archLSB),认证,其中,gLSB,定义了那些基于,LSB,程序在运行过程各模块间标准接口,,archLSB,定义了基于不一样架构处理器(,CPU,)标准接口,LSB,内容主要覆盖文件系统设计,二进制格式(包含可执行和共享库),系统命令,,scripts,等内容。而,POSIX,标准和,LSB,标准之间有不少交融地方。,FSG,提供文档以及测试工具、一致性测试等都是无偿。,第35页,LSB,带来好处,促进,Linux,平台标准化,使得,Linux,工业标准早日形成,防止,Linux,陷入互不兼容泥沼,重蹈,Unix,阵营分裂覆辙。,意在促进,Linux,国际化,Li18nux,等业已形成,标准遵照。,降低个别企业软件开发成本,节约资源以防止无须要重覆浪费,使得对,Linux,开发企业有一个可靠营利模式,同时兼顾,Linux,可自由传布特征,第36页,LSB,现实状况,开源软件支持者自由标准组织(,Free Standards Group,)于,年,7,月发表,LSB,1.0,测试版,于,04,年,1,月,向大众公布了其,LSB 2.0,版,Linux,开发指南,LSB(2.0)功效支持PPC64、,AMD,64、IA64、PPC32、S390和S390X等许多处理器架构。,已经制作,LSB,认证,Linux,产品软件开发商包含,Red Hat,、,Turbolinux、,SuSE Linux,、,MandrakeSoft,、,Conectiva,、,Laboratory,、,Sun Wah Linux,、,ThizLinux,和,Progeny等,。,第37页,LINUX在线文档,man,,即,manunal,,是,LINUX,系统手册电子版本。依据习惯,系统手册通常分为不一样部分(或小节,即,section,),每个小节阐述不一样系统内容。当前小节划分以下:,1.,命令:普通用户命令,2.,系统调用:内核接口,3.,函数库调用:普通函数库中函数,4.,特殊文件:,/dev,目录中特殊文件,5.,文件格式和约定:,/etc/passwd,等文件格式,6.,游戏程序命令。,7.,杂项和约定:标准文件系统布局、手册页结构等杂项内容,8.,系统管理命令。,9,.,内核例程:非标准手册小节。便于,Linux,内核开发而包含。,手册页普通保留在,/usr/share/man,目录下,其中每个子目录(如,man1,man2,.,manl,mann,)包含不一样手册小节,第38页,man,命令,man,命令行:,man-acdfFhkKtwW-m system-p string-C config_file-M path-P pager-S section_list section name,-M,路径,,指定搜索,man,手册页路径,通常这个路径由环境变量,MANPATH,预设,假如在命令行上指定另外路径,则覆盖,MANPATH,设定。,-P,命令,,指定所使用分页程序。,-a,显示全部手册页,而不是只显示第一个。,-d,这个选项主要在检验时使用,假如用户加入了一个新文件,就能够用这个选项检验是否犯错,这个选项并不会列出文件内容。,-f,只显示出命令功效而不显示其中详细说明文件。,-p string,设定运行预先处理程序次序,共有以下几项:,e eqn t tbl,,,g grap r refer,,,p pic v vgrind,-w,不显示手册页,只显示文档文件所在位置。,第39页,info,Linux,中大多数软件开发工具都是来自自由软件基金会,GNU,项目,这些工具软件件在线文档都以,info,文件形式存在。,info,程序是,GNU,超文本帮助系统。,info,文档普通保留在,/usr/info,目录下,使用,info,命令查看,info,文档。要运行,info,,能够在,shell,提醒符后输入,info,,也能够在,GNU,emacs,中键入,Esc-x,后跟,info,。,info,帮助系统初始屏幕显示了一个主题目录,你能够将光标移动到带有,*,主题菜单上面,然后按回车键进入该主题,也能够键入,m,,后跟主题菜单名称而进入该主题。比如,你能够键入,m,,然后再键入,gcc,而进进入,gcc,主题中。,详细子命令省略,第40页,HOWTO,可供用户参考联机文档另一个形式是,HOWTO,文件,这些文件位于系统,/usr/doc/HOWTO,目录下。,HOWTO,文件文件名都有一个,-HOWTO,后缀,而且都是文本文件或,html,格式。,每一个,HOWTO,文件包含,Linux,某首先信息,比如它支持硬件或怎样建立一个引导盘,关于,glibc,、,gcc,、,Java,、,SMB,等。,要想查看这些文件,进入,/usr/doc/HOWTO,目录,使用,more,命令,详细形式以下:,$cd/usr/doc/HOWTO;more,topic-name,-HOWTO,另外,,HOWTO,文档还有其它格式文件,比如:,HTML,和,PS,等,保留在,/usr/doc/HOWTO/other-formats,下。,第41页,LINUX惯用辅助在线命令,help,命令,用于查看全部,Shell,命令。用户能够经过该命令寻求,Shell,命令使用方法,只需在所查找命令后输入,help,命令,就能够看到所查命令内容了。如:$help test,Whereis,这个程序主要功效是寻找一个命令目标码、源码和文档所在位置。比如,我们最惯用ls命令,它是在/bin这个目录下。假如希望知道某个命令存在哪一个目录下,能够用whereis命令来查询,主要参数:,b,只查找二进制文件,m,查找主要文件,s,查找起源,u 查找不惯用统计文件,如:,$whereis ls,执行后输出:ls:/bin/ls/usr/share/man/man1/ls.1.gz,apropos,搜索联机文档中与匹配字符相关条目。,第42页,LINUX FAQ,UNIX,和,Linux,有什么不一样,?,为何,Linux,很主要,?,我能用,Linux,做什么,?,怎样开始学习,Linux?,怎样在应用开发中使用,Linux?,Linux,上能够使用哪些编程语言,?,LINUX,适应性,。,第43页,LINUX不足,Linux,从出现到现今只经历了短短十年时间,但其发展速度是惊人,这与它开放性和优良性能是密不可分。不过我们应该看到,作为一个由学生开发系统,,Linux,还有许多先天不足,它设计思想过多地受到传统操作系统约束,没有表达出当今操作系统发展时尚,详细表现在以下几个方面:,不是一个微内核操作系统;,不是一个分布式操作系统;,不是一个安全操作系统,没有用户线程;,不支持实时处理;,代码是用,C,而不是,C,这么当代程序设计语言编写,尽管,Linux,有这么和那样不足,但其发展潜力不容低估,其发展动力就是遍布全球、为数众多,Linux,热心者,今后,Linux,将会朝着愈加完善功效化方向发展。,或许,正是因为上面不足才使得LINUX发展没有受到更多束缚。,第44页,LINUX应用前景,Linux,开放性和灵活性使它得以在试验室和其它研究机构中被用于创新性技术变革前沿,,Linux,健壮和开放灵活性意味着它在今后很多年都将处于开发战线最前沿。,高性能计算领域,美国,ASCI,(加速战略计算创新)计划中多台机器采取,Linux,操作系统,年,11,月,16,日公布,TOP 500,中前十名机器中第五、六名分别采取了,LINUX,操作系统,其处理器数量到达,2816,和,2304,。,国内机群系统几乎都采取,LINUX,操作系统,服务器领域,桌面系统,嵌入式系统,安全平台,第45页,LINUX应用,网上,两条新闻,IBM首席信息官Bob Greenberg撰写按需计算计划初步内部备忘录,由IBM企业一名员工泄露了出来。在备忘录中,能够看出IBM有意到底转向Linux桌面系统,新Open Desktop很有可能是完全取代Windows一套全新桌面工作环境,中国Red Flag Software和日本Miracle Linux企业携手合作,目标是开发一个公共Linux平台,方便让亚洲企业轻松投入开放源代码阵营。,第46页,LINUX在中国应用,中国 Linux 标准呼之欲出 四份规范草案已完成,Linux 国家标准工作组当前已经完成对 Linux 应用编程界面(API)规范、Linux 桌面操作系统技术规范、Linux 服务器操作系统技术规范、Linux 用户界面等四个方面规范草案编写,并进入社会征求意见征求阶段。,Linux 国家标准工作组已经申请了 863 计划 Linux、Office 关键技术标准项目,该项工作从 Linux 标准体系研究着手,重点开启了汉字特征,桌面系统技术,服务器系统技术,用户图形界面环境研究等工作。,第47页,GNU,通用公共许可证,(,GNU General Public License,,,GNU GPL,),UNIX发展带来问题,Unix,正式诞生,:,1973,年,Ritchie,等人以,C,语言写出第一个正式,Unix,关键,主要,Unix,分支:,1977,年,BSD,诞生,百家齐鸣,Unix,版本,GPL,诞生,Stallman,在,1984,年创建了,GNU,与,自由软件基金会,他创作了许多自由软件供大众来使用,对于其作品以自由(free)GNU General Public License(GPL)授权模式提供大众使用,FSF 关键观念是:版权制度是促进社会进步伎俩,版权本身不是自然权力,第48页,GNU,主要规则,Stallman,先生对自由度下了这么直接说明:,你能够依据任何你想要目标来运行这个,Free,程序;,你能够在了解了这支个,Free,程序运作之后,将他修改成你所想要样式与功效;,你能够将你自己修改过,Free,程序再次发表,以帮助你朋友们;,你能够将这支,Free,程序进行改良,并将改良过程序公开发表,以造福社群。,简单来说,,GPL,授权含有几个特点:,任何软件挂上,GPL,授权之后,即为自由软件,任何人均可取得,同时,亦可取得其原始码,(Source Code),;,取得,GPL,授权之软件后,任何人均可进行修改原始码,以符合自己喜好;,除此之外,经过修改,Source Code,应回报给网络社会,提供大家来参考!,第49页,怎样了解GPL,大多数软件许可证都被用来剥夺您享受和改变它自由,但和它们不一样,,G N U,通用公共许可证是用来确保您分享和改变无偿软件权利确保软件对全部用户都是无偿。这个通用公共许可证,适合用于无偿软件联盟大部分软件和其它经过作者允许使用程序,(,有些其它无偿软件联盟软件由,G N U,库通用公共许可证所包含,)。,这里说到无偿软件,指是自由,而不是价格,设计通用公共许可证目标是为了确保您有发行无偿软件拷贝权利。确保当您需要时能得到源代码,确保您能够改变软件或在其它新无偿程序中使用其中部分。,尽管,GNU,通用公共许可证要求将修改过代码公布给使用该代码客户,但它不要求将全部修改后代码都公布给公众(这是一些自由软件批评者没有领会关键一点)。确实,,GNU GPL,只要求使用代码客户能够取得修改后代码。,用户自行设计代码,如:发行版本中一些内容,不属于此列。,第50页,本章小结,本章从介绍自由软件三种模式开始,引入了自由软件典范LINUX起源,分析了LINUX发展现实状况和未来趋势。,介绍了,LINUX,系统特点和组成,,,LINUX,内核版本和发行版本差异,及LINUX遵照主要标准及LSB认证。,LINUX在线文档学习是一个主要基础性知识,最终经过对GNU GPL通用许可证一些知识,能够加深我们对LINUX了解和支持。,第51页,第二章,LINUX,用户程序环境,第52页,Linux,下,C,语言编程,Linux,发行版中包含了很多软件开发工具,.,它们中很多是用于,C,和,C+,应用程序开发,.,什么是C,C,是一个在,UNIX,操作系统早期就被广泛使用通用编程语言,.,它最早是由贝尔试验室,Dennis Ritchie,为了,UNIX,辅助开发而写,.,C,在编程领域里得到广泛支持原因,它是一个非常通用语言,.,几乎你所能想到任何一个计算机上都有最少一个能用,C,编译器,.,而且它,语法和函数库在不一样平台上都是统一,这个特征对开发者来说很有吸引力,.,用,C,写程序执行速度很快,.,C 是全部版本UNIX上系统语言.,第53页,ANSI C标准,ANSI C,:这一标准是,ANSI,(美国国家标准局)于,1989,年制订,C,语言标准,确保了未来在不一样平台上,C,一致性,.,。,以后被,ISO,(国际标准化组织)接收为标准,所以也称为,ISO C,。,ANSI C,目标是为各种操作系统上,C,程序提供可移植性确保,而不但仅限于,UNIX,。,该标准不但定义了,C,编程语言语发和语义,而且还定义了一个标准库。这个库能够依据,头文件划分为,15,个部分,其中包含:字符类型,(),、错误码,(),、,浮点常数,(),、数学常数,(),、标准定义,(),、,标准,I/O(),、工具函数,(),、字符串操作,(),、,时间和日期,(),、可变参数表,(),、信号,(),、,非局部跳转,(),、当地信息,(),、程序断言,(),等等。,第54页,GCC介绍,Linux,上可用,C,编译器是,GNU C,编译器,它建立在自由软件基金会编程许可证基础上,所以能够自由公布,.,你能在,Linux,发行光盘上找到它,.,GCC,是,GNU,C,和,C+,编译器。实际上,,GCC,能够编译三种语言:,C,、,C+,和,Object C,(,C,语言一个面向对象扩展)。利用,gcc,命令可同时编译并连接,C,和,C+,源程序。,第55页,使用GCC,gcc,命令基本使用方法以下,:,gcc options filenames,GCC惯用选项,-c,选项,告诉,GCC,仅把源代码编译为目标代码而跳过汇编和连接步骤,.,这个选项使用非常频繁因为它使得编译多个,C,程序时速度更加快而且更易于管理,.,缺省时,GCC,建立目标代码文件有一个,.o,扩展名,.,-S,选项,告诉 GCC 在为 C 代码产生了汇编语言文件后停顿编译.GCC 产生汇编语言文件缺省扩展名是,.s.,-E,选项,指示编译,器,仅对输入文件进行预处理.当这个选项被使用时,预处理器输出被送到标准输出而不是储存在文件里.,-v,选项,指示编译时列出编译过程每个阶段,如:预处理、汇编器、连接器,并列出每个阶段命令执行时详细信息。,第56页,GCC优化选项,当你用,GCC,编译,C,代码时,它会试着用最少时间完成编译而且使编译后代码易于调试,.,易于调试意味着编译后代码与源代码有一样执行次序,编译后代码没有经过优化,.,有很多项选择项可用于告诉,GCC,在花费更多编译时间和牺牲易调试性基础上产生更小更加快可执行文件,.,这些选项中最经典是,-O,和,-O2,选项,.,-O0 不优化,-O/O1,选项告诉 GCC 对源代码进行基本优化,,主要是循环优化和跳转优化,普通该选项为缺省值.这些优化在大多数情况下都会使程序执行更加快.,-O2,选项告诉 GCC 产生尽可能小和尽可能快代码.,-O2,选项将使编译速度比使用,-O,时慢.但通常产生代码执行速度会更加快.主要优化策略包含:,公共子表示式删除,运算强度弱化(strength reduce),窥孔优化以及指令调度,-O3 选项除了进行O2相关优化外,还进行内联优化,和存放器重命名,优化,还有一些优化选项在O3中也没有,比如,循环展开、数据预取、以及指令投机调度等,这些优化就要加专门优化选项才行。,第57页,调试和剖析选项,GCC,支持数种调试和剖析选项,.,在这些选项里你会最惯用到是,-g,和,-pg,选项,.,-g,选项告诉,GCC,产生能被,GNU,调试器使用调试信息方便调试你程序,.GCC,提供了一个很多其它,C,编译器里没有特征,在,GCC,里你能使,-g,和,-O(,产生优化代码,),联用,.,这一点非常有用因为你能在与最终产品尽可能相近情况下调试你代码,.,在你同时使用这两个选项时你必须清楚你所写一些代码已经在优化时被,GCC,作了改动,.,-pg,选项告诉,GCC,在你程序里加入额外代码,执行时,产生,gprof,用剖析信息以显示你程序耗时情况,.,第58页,GCC主要命令选项,-ansi 只支持 ANSI 标准 C 语法,将禁止 GNU C,一些特色,-c 只编译并生成目标文件。,-DMACRO 以字符串“1”定义 MACRO 宏。,-DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。,-E 只运行 C 预编译器。,-g 生成调试信息。GNU 调试器可利用该信息。,-IDIRECTORY 指定额外头文件搜索路径DIRECTORY。,-LDIRECTORY 指定额外函数库搜索路径DIRECTORY。,-lLIBRARY 连接时搜索指定函数库LIBRARY。,-o FILE 生成指定输出文件。用在生成可执行文件时。,-O0 不进行优化处理。,-O 或-O1 O2 优化生成代码。,-O2 深入优化。,-O3 比-O2 更深入优化,包含 inline 函数。,-shared 生成共享目标文件。通惯用在建立共享库时。,-static 禁止使用共享连接。,-UMACRO 取消对 MACRO 宏定义。,-w 不生成任何警告信息。,-Wall 生成全部警告信息。,第59页,GNU make,在大型开发项目中,通常有几十到上百个源文件,假如每次手工键入,gcc,命令进行编译话,则会非常不方便。所以,人们通常利用,make,工具来自动完成编译工作。,假如仅修改了某几个源文件,则只重新编译这几个源文件;,假如某个头文件被修改了,则重新编译全部包含该头文件源文件。,利用这种自动编译可大大简化开发工作,防止无须要重新编译。实际上,,make,工具经过一个称为,makefile,文件来完成并自动维护编译工作。,makefile,需要按照某种语法进行编写,其中说明了怎样编译各个源文件并连接生成可执行文件,并定义了源文件之间依赖关系。当修改了其中某个源文件时,假如其它源文件依赖于该文件,则也要重新编译全部依赖该文件源文件。,第60页,GNU make调用规则,默认情况下,,GNU make,工具在当前工作目录中按以下次序搜索,makefile,:,GNUmakefile,makefile,Makefile,在,UNIX,系统中,习惯使用,Makefile,作为
展开阅读全文