第!部分Lnux编程T工具包 使用和配置的图形用户界面(GU),但与Windows不同的是,KDE仅仅是在操作系统基础 上为改善视觉而引入的··个薄层,并且很易于进入功能强大的命令行界面,在本书即将出版 的时候,Caldera System发行了OpenLinux的2.2版,其中甚至包含了一个基于窗廿的图形 化安装程序!同时,至少有四种基于Lux的办公组件已经或将要发行,它们分捌是:Ap plixware,Star Office,Koffice以及现在正:在使用的KDE中的相关部分。但是,尽管WordPer- fect8 for Linux很早就出现了,(orel公司已经不再开发他们自己的办公套件了。在大量用 JLinux的应用程序和工其的基础上,与Microsoft(ffice相似的办公组件的出现使得Lin ux成为Windows的-个更强有力的竞争对手。 1.3 Linux简史 Linux始于I991华8月发表在comp.os.minix【Jsenet新闻组上的如下.-篇文章,作若 是一名芬兰的大学生: Hello everybody out there using minix- I'm doing a (free)operating system (just a hobby,won't be big and professional tike gnu)for 386(486)AT clones. 当然,这个学生就是1 inus Torvalds,而他的“业余爱好”已经发展成为现在的Linux。 Lmux的1.0版内核发布于1994年3月14日,当前稳定的内核版本是2.2,在1999年1月 25日正式发布。为了在自已的386上能够运行类似于UNIX的操作系统,在MNIX的基础 上,Torvalds编写了Linux,Linux诞生了。 1.4 Linux与UNIX 严格地说,Liux不是UNX。UNIX是一个注册商标,需要满足大串茶款并且支付可 规的费用才能被许可使用它。Linux只是Unix的克隆.在运行特性上与Unix相似而已。 Linux所有的内核代码都由Linus Torvalds以及其他几位核心黑客手上编写的。许多在Iin x上运行的程序也都是重新编写的,但是,也有大址的软件只是简单的从其他操作系统尤 其是UNIX和类UNIX操作系统上移植而来。 更重要的是,L.inux是·个符合P()SIX规施的操作系统。P()SIX是由电子和电气I程 师协会(nstitute of Electrical and Electronic Enginees,IEEE)提出的一系列标准,用下定义-- 个可移植的操作系统接口。实际上,Linux为什么与UNIX这么相像,原因就在于Linux遵 循POSIX规范。 1.51inux编程 随着Iiux的不断成热,对于1inu×程序员的需求也在逐步增长。无论是初学编程的新 手还是熟练的程序员,最初接触Iux编程时都会对其中大量的工具和技术望而生:思,很难 决定从哪儿下手。作者与这本书的目的就是为了帮助用户摆脱这种困境。书中介绍了用于 【iux编程的常见的工具和技术,我们真诚地希望本书可以为读者的实际编程打下坚实的
第1章批貌 基础。在学习完本书以后,读者就会有足够的能力来开始Liux编程了。 1.6为何选择Linux编程 人们为什么要用【iux编写程序?不同的人对这个问题会有不同的回答,但是这些答案 可以分为几类。 首先,在Linux上编程很有意思一这就是我做这件事的原因。其次,Linux是自由软 件(这种自由首先在于自出使用的权利,然后在于免费)。第三,它是开放的。在这里没有隐 藏的接口,也没有未公开的功能或API(Application Programming Interface,应用程序编程接 口)。并且,如果不喜欢它的某些工作方式,还可以直接找到源代码来修改。 最后,也是最重要的一个原因,Liux程序员属于一个特殊的群体。每个人都需要在某 一个层次上归属于某种精神,以产生一种认同感。对于Windows程序员而言是这样,对于 Lux程序员而言也是如此,就如同人们要去教堂、俱乐部和运动队一样。另一方面,在更深 的层次上,能否进入这个群体仅仅取决于一个人的能力、技巧和才于,而不取决于钱财、容貌 和人际关系。例如,Linus Torvalds很少囚为某些看似合理的观点而改动内核,而只认同止在 实际运行的代码(“给我看代码”是他的一句口头禅)。 我不认为1iux代表着一种精英文化,更确切地说,一个人在群体中的作用取决于他能 够满足社会的需要程度,而不论他的工作是编写代码,整理文档,还是帮助初学者;做这些事 情既需要一定的技巧与能力,也需要有做这些事情的愿望,在你加入进来成为Linux编程群 体的·员之后,我们希望你能够发现做这件当情不仅有趣,而且有意义。笔者就是这样认为 的。最后,从本质上来说,Linux是·个知识共享的群体。 1.7小结 本章概述了Linux的ji史,简要介绍了目前Linux以及Linux编程的发展状态,并对 Linux的未来作了-些合理的预言。随后,还讲述了Linux和UNIX的关系,并对为什么要 用Linx编程作了一个简要的带有哲学意味的回答
第1部分Lux编程上共包 第2章 设置开发系统 2.1硬件选择 本章的内容从某种意义上而言有很强的主:观色彩。开发人员对硬件系统的选择很人程 度上取决于实际需要和自已的偏好。阅读本章时最好在手头备行硬件兼容性列表HOWT() 及相关文档。HOWT()列表的最新版本可以从下述地址下载:htip:/metalab.unc.edu/ LDP/HO)WTO/Hardware-HOWTO.html. 如果读若不能访问万维网,在Linux光盘及大多数的Linux系统(假设读者已经安装了 Linux)的/usr/doc/HOWTO月录下也能找到这个文件。一般而方,这个列表详细列:了 Linux支持或不支持的各种硬件设备,或给出包含这些设备详细情况的文档名称。因此,这 里我们不再列出Liux支持的各种设备列表(列表很长且更新很快),当然,会给大家介绍笔 者在使用某些特定设备上的经验。 要购关和安装Linux系统,能够方便的访问Internet是-个重要的前提条件。HOWTO 文档的最新版本可以在Linux Onlinc(http:/www.I,inux.org/)上的Support下找到。在同 -一网址的Project下有许多有用的链接指向Linux上主要的开发项日,其中也包括那些支持 不同种类的硬件设备的项目。如果不方便上网,也可以从Red Hat【inux光盘(2张中的第1 张)的/doc/HOWTO中找到这些文档。 2.1.1硬件选择上的考虑 在这里笔者只给出-些必要和关键的思路,而不是使得一切就绪的细节。出于经济上的 考虑或个人的爱好,人们可能更倾向丁使用多个廉价的系统来取代单个的价格昂贵的系统。 同时使用两个系统有很多的理由,下面是其中的一部分: ·需要…个单独的路由器或防火墙 ·需要一个单独的“崩费恢复”系统 ·需要一个能够引导1个或多个其他操作系统的系统 ·在程序发布前,需要一个单独的、干净的系统来测试安装程序或软件包(RPM或IDe bian) ·如果所从事的是敏感工作,那就需要一个单独的低信度系统以提供给外人访问 ·需要有…台或多台Iiux机器作为服务器,24小时不间断工作 大量的iiux程序是在一些比当前的商用系统慢得多的机器上:开发的。如果开发系统 的CPU处理能力过强,可能会强化~些程序员编写低效代码的趋势,从而损害整个开发: 作。当然,如果有实际需要和足够的经济能力购买了比建议的配置更强大的系统,那么就可 能有更强的能力来提高工作效率,对于优秀的开发人员而言时间非常宝贵,因此即使所节省 的时间只占很小的百分比,为额外的处理能力所付的经济代价也是值得的。本章中的建议所
第2章设置开发系统 5 针对的是中低档的开发工作站,当然这个标准可以根据实际需要上下浮动,我们不希望因为 经济上的原因而阻碍人们在已有操作系统的情况下同时也支持Liux平台。 一些基本的开发工作,比如使用本书所述及的那些工具,实际上都不需要高速的CPU; 但是另外一些在开发过程中可能用到的应用软件,或者所开发的程序可能对CPU和内存有 额外的要求。具体说来,编辑和编译C程序不需要太多的计算能力,主要是因为使用mak 工具可以限制在任何给定时间内需要重新编译的代码量,编译C十十代码,尤其是大型程 序,会耗去大址的计算能力:多媒体程序需要的计算能力要大于编辑和编译文件;商用的办 公套件则要求有大量的内存;而在单步执行中监视变量的变化情况則会耗费大址的CPU周 期。 有人建议人」在配置系统时应能使之满足今后两三年的需要,这不是·个明智的主意。 为一年后才需要的计算能力和性能付出的额外花费,其成本效率比很可能低于只购买现在 所需的东西的成本效率比,因此,尽可能在需要的时候再去购买。更新系统有两种方式:彻底 更新或逐渐升级,如果后者就可以满足要求,那么不必一次就购买所有的设备。 2.2处理器/主板 主板最重要的特性之一是它的物理结构,即大小、形状以及关键特性的位置。许多算 机制造商,尤其是-·些主要品牌,都使用专用的主板,而这止是我们所要避免的。因修理或升 级的原因而要替换主板时,专用主板只有有限的选择(或者说是没有选择),而且代价昂贵。 ·些厂商为了降低成本而使用专用主板(因为可以减少串口、并口和其他1/0口的连线),而 另一些则处险恶的用心。 老的AT(或baby AT)结构的主板具有可换性,但其上只有少量的印刷电路靠近于安 置接口的机箱后端,机箱后端也只留出容纳键盘孔和鼠标的插孔。ATX主板还是有许多优 点的。虽然新的ATX主板的尺寸与Baby AT的近似(都与8-1/2"×11"的纸张差不多大)。 ATX主板倒转了长短边的位置,使得长边正对机箱后端,而ATX机箱后端有一个标准的 用金属片封装的长方形预留区域,其上有足够的预留位背来匹配特定主板上的接口,足以用 堆叠的方式容纳以下接口: ·2个串口 ·1个并口 ·键盘口 ·鼠标口 ·2个USB口 ·VGA口 ·音频接口 | 同时,ATX设计移动」CPU和内存芯片的位置,使其不再与整长的I/O卡互相妨碍, 但是有-一些厂商仍然设骨了一些可能会产生冲突的内部接口。此外,大多数机箱商重新设 计了其布局。关下ATX主板的详细信息,参见http:/www.teleport.com/~atx/。图2.1 给出了AT和ATX主板在物理形状上的差异。 |
第1都分1,iux编程工具包 CPU 内存 AT ATX 图2.1AT与ATX主板外形的比较 2.2.1板上I/0 一个典型的Pentium或更高级的主板在板上有2个串口,1个并口,1个键盘T,1个鼠 标口以及DE接口和软驱接口:所有这些都能在Iiux下运行良好。而主板上一些额外的 接口,如USB,SCSl,Ethernet,Audio利Video等,可能需要做兼容性检查。 2.2.2处理器 本章假设读者使用的是ntel或者与之兼容的处理器,使用此类处理器可以构造廉价的 系统,并可以使用现有的大量软件。当然,在处理器.L也i可以有其他诸如Alpha和Sparc体 系结构等的选择,如果对系统所支持的其他处理器结构感兴趣,可以到http:/www,Lin ux.org上找相关资料。 Cyrix和AMD牛产与Pentium兼容的处理器,这些处理器有-些兼容性问题,但现在 已经解决。笔者倾向于使用Socket7架构的主板,这类主板能够对Intel,Cyrix和AMD的芯 片都提供很好的支持。其他公司生产的Pentium兼容芯片也可能支持【,iux系统,但是没有 被彻底的测试过。IDT推销-种名为Winchip的Pentiuin兼容芯片(Centaur C6,看起来应当 能够支持Lnux,但笔者没见到有Linux使用者排队购买这类芯片。在允诺Cyrix使用IBM 芯片工的条件下,IBM曾经推销过自已生产的Cyix芯片,出兼容的角度,可以简单的 把他f们看作Cyrix芯片,但是很明显,将来IBMx86处理器将基于其他的芯片。Pentium I, Pentium II,Xeon和Celeron芯片也应被简单的当作Pentium兼容芯片。 使用Cyrix MediaGX处理器可以构建非常廉价的系统,这类系统把(CPU、高速缓存、显 卡,声卡、主板芯片组和I/O端口集城在两个芯片上。这类系统的缺点是不能够用其他类型 的处理器替代MediaGX,并且视频系统要使用系统的内存,使得应用程序可以使用的内存 减少,而且屏幕的制新也使用处理器/内存的带宽,从而导致系统性能比根据处理机速度所 得出的期望性能低1/3。优点是廉价并且从软件的角度来看所的Media(X系统都是一样 的,所以,只要-台MediaGX系统可以1作,所有其他系统就都能够作,SuSE公司提供对 MediaGX的视频支持(在:http:/www,suse,de/XSuSE/XSuSE.E.html上有更多的信 息),并且KGl上有一个Media(GX的视频驱动程序。在写本书的时候Linux还不能提供对