Linux Develop Guide.docx

上传人:b****7 文档编号:9496949 上传时间:2023-02-05 格式:DOCX 页数:19 大小:31.96KB
下载 相关 举报
Linux Develop Guide.docx_第1页
第1页 / 共19页
Linux Develop Guide.docx_第2页
第2页 / 共19页
Linux Develop Guide.docx_第3页
第3页 / 共19页
Linux Develop Guide.docx_第4页
第4页 / 共19页
Linux Develop Guide.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

Linux Develop Guide.docx

《Linux Develop Guide.docx》由会员分享,可在线阅读,更多相关《Linux Develop Guide.docx(19页珍藏版)》请在冰豆网上搜索。

Linux Develop Guide.docx

LinuxDevelopGuide

Linuxdevelopguide

前言

当前软件业开发工具日新月异,从C到C++,从Java到.net,新构架、新组件层出不穷,今天刚学习到的知识,也许明天就已经过时了。

要想在激烈的竞争中站稳脚跟,在知识大爆炸中跟上时代的步伐,软件开发者一般会有两种应对方式:

1.疯狂的学习,每天恶补新知识以适应知识发展的需要。

2.打牢基础,选择一个相对稳定的平台和相对稳定的开发语言,以不变应万变。

在Unix下C语言编程是一种相对稳定的开发平台下的开发语言,掌握了它,就可以轻松完成当前Unix服务器下疯狂增长的各式各样的功能需求。

为什么选择Unix编程

在工业领域,Unix的应用范围非常广泛,采用Unix系统的服务器性能更稳定,资源利用率更高,更易于维护。

选择Unix编程的理由如下:

1.Unix是现今大中型企业级应用的最佳支持方案

当前,银行、电信、证券等大型数据库需求商无一例外的选择了Unix操作系统。

固然这里存在设备的原因(这些企业选择的大、中、小型机一般只支持厂家配套的Unix操作系统),但另一方面也与Unix超强性能分不开。

Unix操作系统具有安全、稳定和多用户等多方面的特点,可以充分发挥设备的性能,尤其适用对系统性能、文件I/O吞吐量、并发能力、安全认证、网络吞吐和交易时间等有着极高要求的大型网络服务器和数据库服务器。

诸如现今流行的网络游戏,其后台服务器的支持也首选Unix操作系统。

2.Linux为小型企业级应用提供了优质性价比的支持方案

Linux的出现为X86型主机运行Unix成为了可能,也为小型企业提供优质的应用支持方案。

运行Linux(或其它支持X86的Unix)的服务器,也被广泛的应用于网站、中小型网络游戏和其它应用系统中。

3.Unix的分时多用户功能极大地方便了主机共享和远程维护

与Windows的独占性操作系统不同,Unix是分时多用户系统,它允许多人同时登陆主机。

共享主机的不同用户之间相互并发,互不影响,就像每个用户都在使用自己单独的主机一样。

Unix的网络终端远程登陆功能为零距离维护提供了可能,维护人员无论何时何地,只要有网络,就可以凭借Unix对TELNET协议或SSH协议的支持,以极少的系统资源消耗登陆主机,真正做到了运筹帷幄之中,决胜千里之外。

Unix编程的内容

Unix下C语言编程的基本思想与普通C语言编程无异,只是加入了大量的系统调用和特殊应用处理,其主要内容如下:

1.文件I/O系统调用

包括Unix文件系统基础知识、标准I/O编程库、Unix文件系统调用库等。

2.时间与信号系统调用

包括时间获取与设置、定时器的使用、信号系统的调用等。

3.进程与线程系统调用

包括进程与线程的系统控制与生命周期,利用进程或线程设计并发程序的方法等。

4.进程间通讯系统调用

包括管道和IPC(消息队列、信号量和共享内容等)的系统调用等。

5.SOCKET通讯应用

包括SOCKET通讯的各种模式和SOCKET与多进程、多线程的联合并发程序设计的方法等。

6.Curses字符界面应用

包括利用Curses函数库操作网络终端和物理终端的方法,以及Curses库与SOCKET的联合程序设计的方法等。

7.数据库编程应用

包括利用数据库提供的API函数和嵌入式SQL直接操作数据库的方法等。

怎样学习Unix编程

编程是一门细致的工作,对于Unix下C语言编程来说更是如此。

无论读者是因为兴趣爱好选择Unix编程,还是由于工作压力被迫选择Unix编程,耐心和细致都是必不可少的;另外熟能生巧是学习知识永远的捷径:

1.勤操作,熟练Unix应用

很多第一次接触Unix的读者在编程时,常常有种无从下手的感觉,不是看不懂程序,或者不会编程序,而是不知道该如何进入Unix系统,不知道该如何编辑程序,也不知道该如何编译程序。

的确,Unix编程初学者的瓶颈常常不是程序本身,而是诸如安装机器、安装系统软件和shell操作等一系列表面上与编程毫不相关的事务。

所以熟练使用Unix的各种操作,可以大大提高Unix的编程效率。

事实上,Unix编程与Unix操作息息相关,初学者可以通过安装操作系统、安装数据库软件、安装文件系统、IPC控制、启停应用软件等各种操作增加自己的对Unix编程的理解。

Unix的基本操作见本书第$1.2小节,或者请查阅相关书籍。

【实践经验】只有真正熟练应用Unix操作系统的开发者才可以真正的理解Unix编程。

2.勤编程,提高动手能力

眼高手低是人们学习时的特点之一,很多读者可能会遇上这样的疑惑:

为什么书上的程序我都看得懂,可实际编程时就是不能灵活应用呢?

其实这是一个熟练的过程,将书中的实例运行几次,把书后的习题解答几次,也许你会发现成功驾驭Unix编程不再是虚无飘渺的梦。

数学家华罗庚曾经说的“苦战猛攻埋头干,熟练生出百巧来”就是这个道理。

本书的读者可以从以下几个方面实践:

(1)学习书中实例,并且编译和执行之。

(2)理解实例,举一反三,,并联系实践,思考实例在实践生产中的应用。

(3)按部就班完成附录C中的《精通Unix下C语言编程100例》的代码。

【实际经验】虽然随书代码中会附带本书全部实例的源代码,但请读者务手工输入、编译并且执行全部程序。

因为:

·输入代码过程将加深记忆和理解。

·手工输入过程中肯定会产生一些笔误,导致程序不能编译通过,或者不能正常运行;而对程序调试的过程其实就是一种最好的实践。

·亲自输入代码并且测试通过,会产生一种成就感,极大地提高学习兴趣。

3.多思考,举一反三掌握知识

在实际应用中,存在多种多样的情况,不是书中的实例可以穷尽的。

因此读者在学习完一个实例后,可以根据所在企业的实际情况,编写出具有企业特色的实例来,即学习了Unix编程,又提前为实践生产做了准备。

总之,学习Unix编程最重实践,读者请务必亲自调试书中实例,完成书后习题,只有这样才能尽快到达“众里寻他千XX,暮然回首,那人却在灯火阑栅处”的境界。

精通Unix下C语言编程与项目实践

 

学习linux/unix编程方法的建议,学习Linux的四个步骤

解答:

学习Linux的四个步骤

假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过

我想大概可以分为4个阶段,水平从低到高

从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码

其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数

安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式

系统编程推荐《高级unix环境编程》,黑话叫APUE

还有《unix网络编程》,这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好

内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发,参考书如下《linuxdevicedrivers》,黑话叫ldd

《linuxkerneldevelopment》,黑话叫lkd

《understadingthelinuxkernel》,黑话叫utlk

《linux源码情景分析》

这四本书为搞内核的必读书籍

最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了

学习linux/unix编程方法的建议

建议学习路径:

  首先先学学编辑器,vim,emacs什么的都行。

然后学makefile文件,只要知道一点就行,这样就可以准备编程序了。

  然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。

  如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。

这样基本上系统方面的就可以掌握了。

  然后再看DouglusE.Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。

如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。

  对于几本经典教材的评价:

  《TheCProgramingLanguage》K&R经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。

虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。

篇幅比较小,但是每看一遍,就有一遍的收获。

另外也可用谭浩强的《C语言程序设计》代替。

  《AdvancedPrograminginUnixEnvirement》W.RichardStevens:

也是非常经典的书(废话,Stevens的书哪有不经典的!

),虽然初学者就可以看,但是事实上它是《UnixNetworkPrograming》的一本辅助资料。

国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。

  《UnixNetworkPrograming》W.RichardStevens:

第一卷讲BSDSocket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSDSocket,所以这本书只要看大约一半多就可以了。

第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。

所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。

看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。

国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。

所以建议还是看中文版。

  《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。

我没有怎么看过。

,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。

  《用TCP/IP进行网际互连》Douglus.E.Comer一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。

感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。

事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。

第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。

习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师。

卷二我没有怎么看,卷三可以作为参考手册,其中地例子也经典。

如果您看过Qterm的源代码,就会知道Qterm的telnet实现部分大多数就是从这本书的源代码过来的。

对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。

  《OperatingSystem-DesignandImplement》这个是讲操作系统的书,用Minix做的例子。

作者母语不是英文,所以英文看起来比较晦涩。

国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。

读了这本书,对操作系统的底层怎么工作的就会有一个清晰的认识。

  《LinuxDeviceDriver》2e,为数不多的关于Linux设备驱动程序的好书。

不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。

国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。

要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。

 

新手看招 Unix和Linux下C语言学习指南

引言

  尽管C语言问世已近30年,但它的魅力仍未减退。

C语言继续吸引着众多的开发者,他们为了编写、移植或维护应用程序而必须学习新技能。

  本文是为了满足对C语言初学者或想提高自身C语言修为的开发人员的需要而写的。

希望对您的学习和工作有所帮助。

您也许不赞同其中的某些方法,但我们希望您会喜欢其中的一些。

  本文不介绍作为一个程序员应掌握得语言细节,而是与初学者分享自己的UNIX下C语言编程学习经验;也不说明一个合格的编程人员应该掌握的计算机知识,比如:

操作系统、数据结构与算法、数据库等等。

  不管您出于什么目的,希望您阅读完本文后能留下您的批评或建议。

您的中肯的批评会成为作者前进的动力。

  工具篇

  “公欲善其事,必先利其器”。

编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道,下面列出学习C语言编程常常用到的软件和工具。

  

(一)操作系统

  在UNIX或Linux系统中学习C很方便,所以在开始您的学习旅程前请先选择一个UNIX或Linux操作系统。

  目前可供个人免费使用的UNIX或Linux系统有FreeBSD、RedHatLinux、SUSELinux等,而且在安装包中还提供很多实用的工具,如:

gcc,make等。

  如果您一直使用Windows,身边又没有多余的机器安装UNIX,则可以使用VMware,通过VMware安装虚拟系统。

  

(二)编译工具

  目前绝大多数Unix或Lnux系统都提供CC或GCC编译器,最简单的cc命令格式如下:

  cc-ohellohello.c

  在unixshell环境中敲入上面的代码会将hello.c程序编译成可执行文件hello。

  make工具如GNUmake、SystemVmake和Berkeleymake是用来组织应用程序编译过程的基本工具,但是每个make工具之间又有所不同。

  大部分UNIX和Linux程序都是通过运行make来编译的。

make工具会读取一个包含指令的文件(这个文件的名字通常都是makefile或Makefile,不过后文中我们统一称之为“makefile”),并执行各种操作来编译程序

  (三)调试工具

  最简单的调试工具:

为你的程序添加打印语句

  在你对程序的运行机制有了一定的了解后,你可以实用一些工具帮助你进行调试,当然你得学习一下这些工具得使用,如:

dbx,gdb等。

  还有一些内存工具可以帮你查找内存泄漏或缓冲区溢出等一些问题,如:

memwatch,yamd等

  (四)其他工具

  1.vi或vim

  Unix下文本编辑器。

主要靠一堆命令来编辑文本文件,学Unix编程最好熟悉并熟练使用vi编辑器。

  当然在实际工作中,你可能需要一个集成编码环境或一个功能强大的图形化编辑工具。

  提供一个中文的vim在线手册:

linux.org/">http:

//vcd.gro.clinux.org/

  term

  最著名的网络终端软件之一,可以使用它方便的连接到主机系统中。

  3.Secureshell

  一个支持ssh协议得客户端工具,多数情况下用来连接linux系统。

  书籍篇

  “书是人类进步得阶梯”。

学习一门新的知识,当然要选择几本适合自己得书籍,下面介绍一些我自己学习C语言使用过的书籍:

  1.《Cprimerplus》

  推荐理由:

适合作为入门书和基本函数查询得参考资料。

本书最新版为第五版,以ANSIC99为标准详细介绍了C语言。

  2.《TheCprogramming_Language》

  推荐理由:

C语言之父得作品权威性毋庸置疑。

虽然书籍出版时间比较老,好像也没更新,不过仍不失为经典书籍,网上有这本书得英文电子版提供下载。

  3.《C专家编程》

  推荐理由:

本书可以帮助有一定经验的C程序员成为C编程方面的专家,最关键的是本书寓教于乐,让你充分享受编程的乐趣。

  4.《C缺陷与陷阱》

  推荐理由:

书中所揭示的知识能帮助您绕过C语言自身得陷阱和缺陷,减少代码中许多常见的Bug。

  5.《unix环境高级编程》

  推荐理由:

既然是UNIX环境下C编程,就不得不说说UNIX编程书籍。

Stevens先生的《unix环境高级编程》是我竭力推荐的,也是我的案头必备(如果对网络编程有兴趣的,可以学习一下Stevens先生的《UNIX网络编程》两卷,如果觉得还不过瘾,可以再看看《TCP/IP详解》三卷)。

  6.《计算机编程艺术》

  推荐理由:

算法大师得呕心沥血之作。

计划出版五卷书,目前好像已出版3卷。

对算法有兴趣得可以研究一下。

过程篇

  1.学习C语法

  语法的学习对于一个具有编程底子的来说,就很轻松了;即使你以前没有学习过其他编程语言,我相信有2个星期,你也能轻松搞定。

  需要注意的是,不要太纠缠于语言的细节,比如:

运算符优先级与结合性的问题等。

  2.学习C标准库

  ANSIC库把函数分为不同的组,每个组都具有与之相关的头文件。

C语言标准库相对于其他语言,比如C++,Java来说是非常短小精悍的,但首先应着重对以下库进行学习:

  ctype.h:

字符处理

  math.h:

数学库

  stdio.h:

标准I/O库

  stdlib.h:

通用工具库

  string.h:

字符串处理

  time.h:

时间和日期

  如果想了解完成的ANSIC库,你可以购买相关的书籍,这些书籍一般会详细介绍每个函数的用户和一些注意点;当然你也可以登陆……amp;page=index.html获取ANSIC库详细信息。

  3.攻克C的难点

  C语言声明:

  C语言的声明确实让我觉得恐怖,比较晦涩难懂,而且声明的形式和使用的形式还类似。

比如如下的声明恐怕就连很多熟悉C多年的程序员也不是一眼就能看出来的:

  char*const*(*next)();

  那么有没有一种好的记忆方法或规则来搞清楚呢,好像没有,如果有的话也不是这样折磨人了。

不过可以看看《C专家编程》第三章的内容,或许你会有所收获。

也只能多学多练了,所谓熟能生巧嘛,希望这个问题不要在你的心灵上留下阴影。

  数组与指针:

  数组与指针的关系,在标准中并没有作很详细的规定,而且好多C入门的书籍在这个问题上并没有给出很详细的说明,所以会给人造成很多误解。

  对于这个问题,你可以参考《C缺陷与陷阱》4.5节和《C专家编程》第4,9,10章,相信你这里面的内容搞透彻,以后就不会再被这个问题搞迷惑。

  指针与内存:

  如果你以后编写规模较大的程序,你可能发现这个问题可能会是你最大的烦恼,而且可能会是你消耗最多调试时间的事项。

  C版本的问题:

  你得特别小心该问题,最好不要在你的程序中混合使用不同版本C的特性,否则会给你带来很迷惑的问题。

如果一定要用,你最好清楚自己在做什么。

  还有一些其他C中的难点和容易错误的地方,可以学习前人的一些经验。

以下是一个cFAQ的链接地址,相信在这篇文档中有你需要的大部分问题的解决方法。

  http:

//c-faq-

  4.UNIX环境编程

  学习了以上内容之后,我相信,你就可以进行unix环境编程了。

不过你可能需要对操作系统理论有一点点的了解,这样学起来会比较轻松一些。

  Unix环境编程,你应该着重IO和进程两大块内容。

《Unix环境高级编程》中对Unix环境编程有着非常详细且深入的论述,而且书中有大量实用性例子程序,不过可能得花上几个月得时间,好好啃一啃了。

  在扎实掌握以上内容,不代表你得C语言学习支路已经完成,相反,才刚刚开始。

以后你需要用学到得知识去解决大量不同实际问题,在不断得实践过程中,你会近一步加深对C的理解。

有了以上基础之后,你会发现,在实践过程中需要的其他知识,你会非常快速的掌握。

  方法篇

  编程是一个实践性很强的工作,最好的学习方法就是边看书边调试代码,把书上的例子程序反复的修改调试运行,从中得到自己的体会。

在自己的学习或工作中写的一些测试的程序,要分门别类的保存下来,在以后的实际工作中不断的整理,日积月累就是一个很好资源库了。

  有时候,可能会觉得书上的例子作为理解概念时比较通俗易懂,但实用价值不高。

所以要提高自己的编程能力,你还需要学习别人的代码,我认为研究别人的代码是提高自己实际编程能力最好且最快的途径,现在网络上有很多价值很高的开源代码可供你选择学习。

  最后,不得不提到的一个问题就是,千万不要让自己淹没在各种技术细节的海洋中,比如前缀++运算符问题,表达式计算优先级问题等。

  学习UNIX下C编程也好,还是其他编程语言,我们最后的目标都是为了使用计算机解决现实中的问题,所以积累日常工作中常见问题的解决方法,并形成一定的范式,做一些提炼才是最重要的。

说到底,设计和编程所做的事情,就是方法论,不管你是无意识还是有意识的,所以一定要注重积累。

  补充说明

  1.对于有人问是否需要一份ANSIC99标准,对于一般开发人员,并没有必要,且不说其语言晦涩难懂,即使你能从头到尾学习一遍,我想对你的编程也没有什么提高。

  2.目前多数UNIX操作系统所带的cc、gcc等编译器好像并不支持C99的所有新特性,不过现在已经有足够多的新特性普遍可用,因此有理由开始认真考虑在新的开发中采用C99特性,尤其是用在它们使得效率或清晰度本质上发生变化的那些地方(比如以内联函数代替宏替换)。

  3.编程规范的问题:

一般较为正规的软件公司都会有自己的一套完成的编程规范,那么你遵守就好;如果你是自己学习的话,可以选择一个较为通用的规范,最好的方法就是看别人是怎么写代码的。

怎样才能学好linux?

学习嵌入式linux,首先要了解通用的linux操作系统,下面转载网上一篇介绍如何学习linux的笔记,感觉写得不错,思路比较清晰,希望对大家的学习有所帮助~~

随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windows的经验往往有一些茫然的感觉:

不知从何处开始学起。

这里介绍学习Linux的一些建议。

一、从基础开始:

常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。

例如:

为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。

而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。

这是相当困难的。

二、Linux命令是必须学习虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。

Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:

从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。

举一个例子:

Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1