⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000009.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;Kongming&nbsp;(没日没夜...),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;如何学习linux下编程?&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Aug&nbsp;&nbsp;2&nbsp;11:27:04&nbsp;1999)&nbsp;<BR>&nbsp;<BR>我为你贴一篇文章吧,简要介绍了&nbsp;Linux&nbsp;下的编程工具,&nbsp;<BR>入门是没有问题的。&nbsp;<BR>&nbsp;<BR>这是我最近编写的书的部分内容。&nbsp;<BR>&nbsp;<BR>严正声明:&nbsp;<BR>本文由&nbsp;Kongming&nbsp;网友享有专有版权。&nbsp;<BR>版权所有,未经许可,不准随意复制、改编或变相改编、扩散。&nbsp;<BR>&nbsp;<BR>主要包含如下内容:&nbsp;<BR>?&nbsp;GNU&nbsp;C、C++&nbsp;编译器&nbsp;<BR>?&nbsp;GNU&nbsp;make&nbsp;工具&nbsp;<BR>?&nbsp;GNU&nbsp;的调试器&nbsp;<BR>?&nbsp;RCS&nbsp;版本控制系统&nbsp;<BR>并简单介绍了&nbsp;Linux&nbsp;系统上广为流行的&nbsp;Perl&nbsp;脚本语言。&nbsp;<BR>对比了&nbsp;Linux&nbsp;和&nbsp;Windows&nbsp;NT&nbsp;两种不同的编码风格。&nbsp;<BR>&nbsp;<BR>在&nbsp;BBS&nbsp;上看有些困难,拿回家慢慢看吧。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>第十三章&nbsp;&nbsp;软件开发&nbsp;<BR>由于操作系统只是一个工具,对大多数读者来说,学习操作系统的最终目的是利用操&nbsp;<BR>作系统上的应用软件完成自己的工作,或者利用开发工具开发应用程序。因此,对一个操&nbsp;<BR>作系统来说,可获得的开发工具,以及这些开发工具是否有效,就成为评价操作系统的一&nbsp;<BR>个重要因素。&nbsp;<BR>这一部分的后三章将主要从开发人员的角度比较&nbsp;Linux&nbsp;和&nbsp;Windows&nbsp;NT。本章的主要&nbsp;<BR>内容如下:&nbsp;<BR>?&nbsp;介绍操作系统为开发人员提供的各种系统服务;&nbsp;<BR>?&nbsp;介绍操作系统上的主要开发工具。&nbsp;<BR>考虑到许多读者可能对&nbsp;Linux&nbsp;上的开发工具了解不多,因此,本章将介绍一些&nbsp;Linux&nbsp;&nbsp;<BR>上常用的开发工具。当然,软件开发并不是区区一章就能够讲得清楚的,更多的需要读者&nbsp;<BR>自己去实践。&nbsp;<BR>13.1&nbsp;&nbsp;POSIX&nbsp;标准和操作系统接口&nbsp;<BR>13.1.1&nbsp;&nbsp;Linux&nbsp;和&nbsp;Windows&nbsp;NT&nbsp;对&nbsp;POSIX&nbsp;标准的支持&nbsp;<BR>从第一章的内容我们知道,POSIX&nbsp;是一种标准,主要定义了操作系统的系统调用接口,&nbsp;<BR>POSIX&nbsp;标准最初为提高&nbsp;UNIX&nbsp;系统之间的移植性而开发。Linux&nbsp;是一种&nbsp;POSIX&nbsp;兼容系统,&nbsp;<BR>而&nbsp;Windows&nbsp;NT&nbsp;中包含了&nbsp;POSIX&nbsp;子系统。但这两个操作系统的&nbsp;POSIX&nbsp;之间有什么区别呢?&nbsp;<BR>POSIX&nbsp;是由非常复杂的标准体系组成的,其中广为接受的&nbsp;POSIX&nbsp;标准是&nbsp;POSIX.1&nbsp;标&nbsp;<BR>准。POSIX.1&nbsp;是一个源代码级的兼容性标准,提供了操作系统的&nbsp;C&nbsp;语言编程接口,内容&nbsp;<BR>涉及到POSIX.1a(系统接口扩展),POSIX.1b(实时),POSIX.1c(线程),POSIX.1d(实&nbsp;<BR>时扩展),POSIX.1e(安全性),POSIX.1f(透明文件访问),POSIX.1g(协议无关服务)&nbsp;<BR>以及POSIX.1h(容错)等。POSIX&nbsp;的另外一个重要标准是POSIX.2&nbsp;标准,它定义了操作&nbsp;<BR>系统的&nbsp;Shell&nbsp;和工具标准。通常谈到的&nbsp;POSIX&nbsp;标准就是这两个标准。Linux&nbsp;支持完整的&nbsp;&nbsp;<BR>POSIX.1&nbsp;和&nbsp;POSIX.2&nbsp;标准;而&nbsp;Windows&nbsp;NT&nbsp;只提供对&nbsp;POSIX.1&nbsp;的支持,而且是一个不完&nbsp;<BR>整的系统,许多方面(例如&nbsp;I/O)需要&nbsp;Win32&nbsp;API&nbsp;来完成。实际上,Windows&nbsp;NT&nbsp;的许多&nbsp;&nbsp;<BR>POSIX.1&nbsp;接口是通过&nbsp;Win32&nbsp;API&nbsp;间接实现的。&nbsp;<BR>Windows&nbsp;NT&nbsp;中的&nbsp;POSIX.1&nbsp;版本基本上没有什么用处,在&nbsp;Visual&nbsp;Studio&nbsp;6.0&nbsp;中,&nbsp;<BR>甚至取消了对&nbsp;POSIX.1&nbsp;的支持。如果读者要在&nbsp;Windows&nbsp;NT&nbsp;上进行一些&nbsp;POSIX&nbsp;的开发工&nbsp;<BR>作,建议不要使用&nbsp;Windows&nbsp;NT&nbsp;POSXI.1。用户可以使用第三方POSIX&nbsp;系统,或者由&nbsp;GNU&nbsp;提&nbsp;<BR>供的&nbsp;GNU&nbsp;Win32&nbsp;工具。这些产品提供了更强大的功能,例如&nbsp;Software&nbsp;System&nbsp;Inc.&nbsp;的&nbsp;&nbsp;<BR>POSIX.2&nbsp;工具箱(OpenNT)具有如下特征:真正的&nbsp;UNIX&nbsp;Shell,以及在&nbsp;Windows&nbsp;NT&nbsp;中&nbsp;<BR>运行&nbsp;X&nbsp;Window&nbsp;的能力等。这些软件为&nbsp;Windows&nbsp;NT&nbsp;的非完整&nbsp;POSIX.1&nbsp;系统增加了如下&nbsp;<BR>特性:&nbsp;<BR>?&nbsp;POSIX.1、POSIX.2&nbsp;和&nbsp;ANSI&nbsp;C&nbsp;接口;&nbsp;<BR>?&nbsp;可在&nbsp;Intel&nbsp;和&nbsp;Alpha&nbsp;平台上使用;&nbsp;<BR>?&nbsp;BSD&nbsp;套接字支持;&nbsp;<BR>?&nbsp;System&nbsp;V&nbsp;的共享内存和信号灯&nbsp;IPC&nbsp;机制;&nbsp;<BR>?&nbsp;X11R5&nbsp;客户、库和头文件;&nbsp;<BR>?&nbsp;OPENNTIF(OSF/Motif&nbsp;1.2.4&nbsp;窗口管理器和开发库);&nbsp;<BR>?&nbsp;Color&nbsp;curses库;&nbsp;<BR>?&nbsp;完整的&nbsp;Shell&nbsp;作业管理;&nbsp;<BR>?&nbsp;磁带设备支持;&nbsp;<BR>?&nbsp;UNIX&nbsp;开发工具:make、rcs、yacc、lex、cc、c89、nm、ar、strip&nbsp;等。&nbsp;<BR>GNU&nbsp;Win32&nbsp;是针对&nbsp;x86&nbsp;和&nbsp;PowerPC&nbsp;的&nbsp;Windows&nbsp;NT/95&nbsp;的&nbsp;GNU&nbsp;开发工具。使用这些&nbsp;<BR>开发工具开发的应用程序能够访问&nbsp;Microsoft&nbsp;Win32&nbsp;API,也能访问&nbsp;Cygwin32&nbsp;API,它&nbsp;<BR>提供了附加的类似&nbsp;UNIX&nbsp;的功能,包括&nbsp;UNIX&nbsp;套接字和进程控制等。利用这些工具,可增&nbsp;<BR>强&nbsp;Windows&nbsp;NT&nbsp;上&nbsp;POSIX&nbsp;子系统:&nbsp;<BR>?&nbsp;利用标准的&nbsp;Microsoft&nbsp;Win32&nbsp;API&nbsp;或/和&nbsp;Cygwin32&nbsp;API&nbsp;编写&nbsp;Win32&nbsp;控制台或&nbsp;&nbsp;<BR>GUI应用程序;&nbsp;<BR>?&nbsp;能够方便地从源代码中配置和建立许多&nbsp;GNU&nbsp;工具,包括&nbsp;GNU&nbsp;Win32&nbsp;开发工具&nbsp;<BR>本身;&nbsp;<BR>?&nbsp;可将许多重要的&nbsp;UNIX&nbsp;工具移植到&nbsp;Windows&nbsp;NT&nbsp;而不用对源代码进行大规模修&nbsp;<BR>改;&nbsp;<BR>?&nbsp;包含有相当完整的&nbsp;UNIX&nbsp;环境工具,可使用许多普通的&nbsp;UNIX&nbsp;系统工具。&nbsp;<BR>有关上述这两种软件,读者可访问如下站点:&nbsp;<BR><A HREF="http://www.softway.com/OpenNT/homet.htm">http://www.softway.com/OpenNT/homet.htm</A>&nbsp;<BR>htt://www.cygus.com/misc/gnu.win32&nbsp;<BR>和&nbsp;Windows&nbsp;NT&nbsp;相反的是,Linux&nbsp;是一个&nbsp;POSIX.1标准的完全兼容系统。Linux&nbsp;上&nbsp;<BR>的&nbsp;POSIX.2&nbsp;标准实现是由&nbsp;GNU&nbsp;工具和函数库提供的,其中最主要的&nbsp;C&nbsp;函数库是&nbsp;glibc。&nbsp;<BR>该函数库包含如下内容:&nbsp;<BR>?&nbsp;ISO&nbsp;C:C&nbsp;编程语言的国际标准。GNU&nbsp;C&nbsp;函数库与美国国家标准局(ANSI)公布&nbsp;<BR>的&nbsp;C&nbsp;标准兼容。这一标准后来被国际标准化组织所接收(ISO/IEC&nbsp;9899:1990)。&nbsp;<BR>?&nbsp;POSIX:操作系统的&nbsp;ISO/IEC&nbsp;9945(即&nbsp;IEEE&nbsp;1003)标准。GNU&nbsp;C&nbsp;函数库实现了&nbsp;&nbsp;<BR>ISO/IEC&nbsp;9945-1:1996&nbsp;(POSIX&nbsp;系统应用程序编程接口,即&nbsp;POSIX.1)指定的&nbsp;<BR>所有函数。该标准是对&nbsp;ISO&nbsp;C&nbsp;的扩展,包括文件系统接口原语、设备相关的终&nbsp;<BR>端控制函数以及进程控制函数。同时,GUN&nbsp;C&nbsp;函数库还支持部分由&nbsp;ISO/IEC&nbsp;&nbsp;<BR>9945-2:1993(POSIX&nbsp;Shell&nbsp;和&nbsp;工具标准,即&nbsp;POSIX.2)指定的函数,其中包&nbsp;<BR>括用于处理正则表达式和模式匹配的函数。&nbsp;<BR>?&nbsp;Berkeley&nbsp;Unix:BSD&nbsp;和&nbsp;SunOS。GNU&nbsp;C&nbsp;函数库定义了某些&nbsp;UNIX&nbsp;版本中尚未标&nbsp;<BR>准化的函数,尤其是&nbsp;4.2&nbsp;BSD,&nbsp;4.3&nbsp;BSD,&nbsp;4.4&nbsp;BSD&nbsp;Unix&nbsp;系统(即“Berkeley&nbsp;Unix”)&nbsp;<BR>以及“SunOS”(大众化的&nbsp;4.2&nbsp;BSD&nbsp;变种,其中包含有某些Unix&nbsp;System&nbsp;V&nbsp;的功&nbsp;<BR>能)。BSD&nbsp;函数包括符号链接、select&nbsp;函数、BSD&nbsp;信号处理函数以及套接字等&nbsp;<BR>等。&nbsp;<BR>?&nbsp;SVID:System&nbsp;V&nbsp;的接口描述。System&nbsp;V&nbsp;接口描述(SVID)是描述&nbsp;AT&amp;T&nbsp;Unix&nbsp;System&nbsp;&nbsp;<BR>V&nbsp;操作系统的文档,它是对&nbsp;POSIX&nbsp;标准的扩展超集。GNU&nbsp;C&nbsp;函数库定义了大多&nbsp;<BR>数由&nbsp;SVID&nbsp;指定而未被&nbsp;ISO&nbsp;C&nbsp;和&nbsp;POSIX&nbsp;标准指定的函数。来自&nbsp;System&nbsp;V&nbsp;的&nbsp;<BR>支持函数包括进程间通信和共享内存、hsearch&nbsp;和&nbsp;drand48&nbsp;函数族、fmtmsg&nbsp;以&nbsp;<BR>及一些数学函数。&nbsp;<BR>?&nbsp;XPG:X/Open&nbsp;可移植性指南。X/Open&nbsp;可移植性指南(由&nbsp;X/Open&nbsp;Company,&nbsp;Ltd.&nbsp;<BR>出版),是比&nbsp;POSIX&nbsp;更为一般的标准。X/Open&nbsp;拥有&nbsp;Unix&nbsp;的版权,而&nbsp;XPG&nbsp;则&nbsp;<BR>指定成为&nbsp;Unix&nbsp;操作系统必须满足的需求。GNU&nbsp;C&nbsp;函数库遵循&nbsp;X/Open&nbsp;可移植&nbsp;<BR>性指南(Issue&nbsp;4.2)以及所有的&nbsp;XSI(X/Open&nbsp;系统接口)兼容系统的扩展,&nbsp;<BR>同时也遵循所有的&nbsp;X/Open&nbsp;Unix&nbsp;扩展。&nbsp;<BR>同时,Linux&nbsp;也包含有许多字符界面管理、网络协议处理以及图形图象处理的函数库,&nbsp;<BR>这些函数库均作为一般&nbsp;Linux&nbsp;商业发行版的一部分而一同发行。有关这些函数库的详细&nbsp;<BR>介绍,读者可参阅附录&nbsp;C。&nbsp;<BR>实际上,Microsoft&nbsp;并没有打算自己的操作系统做到与&nbsp;UNIX&nbsp;完全兼容,如果读者看&nbsp;<BR>到过由微软(中国)有限公司编著的《Microsoft&nbsp;SQL&nbsp;Server&nbsp;6.5&nbsp;技术参考》(科学出版&nbsp;<BR>社、龙门书局&nbsp;1997&nbsp;年出版)一书,就可以明白微软和&nbsp;UNIX&nbsp;阵营的激烈竞争。既然&nbsp;&nbsp;<BR>Microsoft&nbsp;在该书中说&nbsp;UNIX&nbsp;如何如何不好,当然就不会对来自&nbsp;UNIX&nbsp;的&nbsp;POSIX&nbsp;有什么&nbsp;<BR>好的支持了。&nbsp;<BR>那么,Windows&nbsp;NT&nbsp;的操作系统接口包括哪些内容呢?&nbsp;<BR>13.1.2&nbsp;&nbsp;Windows&nbsp;NT&nbsp;的操作系统接口&nbsp;<BR>Windows&nbsp;NT&nbsp;的操作系统服务主要体现在&nbsp;Win32&nbsp;API&nbsp;上,大体可分为如下几类:&nbsp;<BR>?&nbsp;窗口管理。应用程序可用来创建和管理窗口的部分,涉及到窗口、消息、消息&nbsp;<BR>队列、控件、对话框、鼠标和键盘输入、定时器、菜单、键盘加速键以及其他&nbsp;<BR>与窗口管理有关的内容。&nbsp;<BR>?&nbsp;图形设备接口。应用程序用来实现设备无关图形的部分,涉及到设备描述表、&nbsp;<BR>坐标转换、元文件、位图、图标、画刷、画笔、区域、直线和曲线、字体、颜&nbsp;<BR>色、路径、剪切、打印等。&nbsp;<BR>?&nbsp;系统服务。应用程序用来实现基本多任务管理的&nbsp;Win32&nbsp;API&nbsp;部分,涉及到进程&nbsp;<BR>和线程、内存管理、网络、动态链接、安全性以及其他有关系统的内容。&nbsp;<BR>?&nbsp;多媒体服务。Win32&nbsp;API&nbsp;中多媒体支持,涉及到音频、视频、媒体控制、多媒&nbsp;<BR>体文件输入和输出以及增强的定时器功能等。&nbsp;<BR>?&nbsp;扩展库。为&nbsp;Win32&nbsp;API&nbsp;额外增加的库,涉及到公用对话框、简化动态数据交换&nbsp;<BR>(DDE)的管理函数、Shell&nbsp;中增强的拖放操作、文件安装函数以及数据解压缩&nbsp;<BR>函数。&nbsp;<BR>可明显看出,POSIX&nbsp;和&nbsp;Win32API&nbsp;是两个完全不同的操作系统接口体系。如果仅比较&nbsp;<BR>这两个操作系统为用户提供的接口及函数库的话,可明显看到有如下特点:&nbsp;<BR>?&nbsp;基于&nbsp;POSIX&nbsp;的操作系统接口部分比&nbsp;Win32&nbsp;的系统服务部分要简洁得多。POSIX&nbsp;的&nbsp;<BR>接口函数大概只有二百多个;而&nbsp;Win32&nbsp;的系统服务部分的函数约有上千个,而&nbsp;<BR>且调用接口相对复杂。&nbsp;<BR>?&nbsp;Linux&nbsp;上除操作系统接口之外的函数库非常丰富。笔者曾经在&nbsp;MS-DOS、Windows&nbsp;&nbsp;<BR>3.1、Windows&nbsp;95/NT&nbsp;下进行过&nbsp;C/C++&nbsp;的开发工作,当我接触到&nbsp;Linux&nbsp;时,发&nbsp;<BR>现许多原来需要自己编写程序实现的功能,Linux&nbsp;上已经有的可用的函数库。&nbsp;<BR>13.2&nbsp;&nbsp;Visual&nbsp;Studio&nbsp;和&nbsp;GNU&nbsp;<BR>在&nbsp;Windows&nbsp;NT&nbsp;上进行开发,用户主要使用的通用开发工具有:&nbsp;<BR>?&nbsp;Microsoft&nbsp;Visual&nbsp;Studio。该开发工具包是&nbsp;Microsoft&nbsp;最完整的开发工具包,&nbsp;<BR>也是使用最为广泛的开发工具包,其中包含有&nbsp;Visual&nbsp;C++、Visual&nbsp;Basic、Visual&nbsp;&nbsp;<BR>FoxPro&nbsp;等开发工具。这些工具一般是集成开发环境,利用这些工具,可在一个&nbsp;<BR>程序中完成编辑、编译、调试等各项工作,对提高开发效率有帮助。&nbsp;<BR>?&nbsp;Borland&nbsp;C++。该工具是&nbsp;Borland&nbsp;公司的&nbsp;C/C++&nbsp;编译器,和&nbsp;Visual&nbsp;C++&nbsp;类似,&nbsp;<BR>也是一个集成环境。&nbsp;<BR>?&nbsp;Borland&nbsp;Delphi。该工具是&nbsp;Borland&nbsp;公司开发的&nbsp;Pascal&nbsp;编译器,Borland&nbsp;公&nbsp;<BR>司为了和&nbsp;Visual&nbsp;Basic&nbsp;竞争而开发,拥有较为广泛的用户群,也是一个集成&nbsp;<BR>环境。&nbsp;<BR>Windows&nbsp;NT&nbsp;上的开发工具都有一个特点,它们均是一些集成开发工具。作为一个程&nbsp;<BR>序员,笔者对集成开发环境是否能够真正提高开发效率,或者能够在多大程度上提高开发&nbsp;<BR>效率保持怀疑态度。因为许多程序员并不使用集成的开发环境,但也同样富有效率。Linux&nbsp;&nbsp;<BR>内核开发小组就是一个例子,在开发操作系统的时候,是无法使用集成开发工具的。使用&nbsp;<BR>集成开发环境有一个缺点,就是容易让程序员养成懒惰的习惯。笔者就更加愿意在程序出&nbsp;<BR>问题的时候去认真地分析程序,而不是一味依赖调试工具。&nbsp;<BR>和&nbsp;Windows&nbsp;NT&nbsp;上的集成开发环境不同,Linux&nbsp;上的开发工具是一些零散的&nbsp;GNU&nbsp;工&nbsp;<BR>具。例如,程序员可能使用&nbsp;VIM&nbsp;编写程序,然后用&nbsp;make&nbsp;或&nbsp;gcc&nbsp;编译程序,如果程序有&nbsp;<BR>错误,用&nbsp;gdb&nbsp;调试程序等。当然,也有一些集成的开发环境可以使用,例如&nbsp;xwpe(Window&nbsp;&nbsp;<BR>Programming&nbsp;Environment)就是一个集成开发环境。如果使用&nbsp;Emacs,程序员也可以借&nbsp;<BR>助&nbsp;Emacs&nbsp;的强大配置能力为自己定制一个集成的开发环境。&nbsp;<BR>Linux&nbsp;下的程序开发还有一个特点,就是可以借助许多脚本语言构造复杂的程序。例&nbsp;<BR>如,程序员可借助&nbsp;Shell&nbsp;脚本编写处理文件、目录的脚本程序,也可以利用&nbsp;Perl&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -