Linux下开发学习步骤
1、先熟悉linux系统的常用命令。
2、深入学习emacs或者vim。值得你花半年时间系统学习!以后我们就是用这个编辑器来写程序的了,经过配置,emacs完完全全就是一个IDE了,像代码跳转,自动补齐(智能感应)以及其他的一些好用功能。 3、学习makefile的编写。因为我们是用makefile来组织我们的程序的就像vc6里头又dsp/dsw文件一样(当然也vc自己makefile)。有些好的工具能帮助我们编写可以移植的makefile,如autoconf等。 4、学习用GUN的开发工具链,如gcc,gdb,ldd,ld,…… 5、学习linux的系统调用以及一些开源库。看看那些高手写的代码,长见识。学习cvs,因为大多数开源代码都是cvs管理的,用cvs 把代码搞下来。 6、编写自己的代码,完成工作 大家遇到问题最多的估计就是如何搭建一个类似VC这样好用的IDE了,呵呵,多花点时间学习emacs,会受益无穷的。还有就是gdb调试时感觉不是很 方便,其实gdb配合emacs用比vc6都好用呢!当然makefile编写也会让很多人畏惧,坚持一下就好了,特别是学会了atuoconf等工具, 写个makefile还是非常容易的。 推荐读物: linux系统使用:《鸟哥的LINUX私房菜:基础学习篇 》 emacs学习:《学习GNU EMACS(第二版)》 linux开发工具学习:《LINUX & UNIX程序开发基础教程 》 linux系统调用学习:《UNIX/LINUX编程实践教程 》,《UNIX环境高级编程(第2版) 》 makefile学习呢,就在网上搜一下吧,参考一下别人的,犯不着买书,如果实在想买呢,《GNU MAKE项目管理(第三版完全修订版)(中文版) 》也不错!cvs,在网上搜搜,教程很多的。
原文地址:
学习C/C++编程,Linux平台的优势与劣势
劣势:
1. 熟悉Linux的人不多,熟悉它需要较长时间。2. 中文资源不够多,往往不全或者不够新。3. 过去学的很多windows的东西,到Linux下行不通。4. 充满Linux风味的vim/emacs上手难,需大量使用才能熟练。5. 门槛高,初学时学习难度曲线陡峭。优势:1. 物以稀为贵,掌握Linux的人,比windows的少很多,而Linux平台需求不小,为您简历增色不少。2. 逼迫你掌握更多词汇,提高英文能力,阅读原版书籍能力与日俱增。3. 接受跟不同的设计哲学,掌握新的开发方式和实现方法。4. 一旦掌握vim/emacs,威力无穷,一个是编辑器之神,一个是神之编辑器。5. 几乎全部软件是开放源码的,想知道怎么实现,可以看源码。6. 原汁原味的gcc,对标准支持很不错,automake cmake等自动化工具,让您如虎添翼。7. 有疑问,翻源码,即使深入内核和驱动,也有源码可看,任何细节和底层,都能一一追寻,看个究竟。8. 知识更保值,倚天屠龙,APUE和UNP风行N年,所载知识,至今有用,不那么快淘汰。9. 大量的优秀开源软件,给你畅游源码之海的愉悦,学习体会各种设计实现技巧。10. 门槛虽高却难学易精,学习难度曲线越来越平坦,跟windows的易学难精不同。推荐书籍:0. UNIX环境高级编程第二版(基础的基础)1. UNIX网络编程第三版卷一(网络的基础)2. Unix Shell Programming(脚本的基础)3. Begin Linux Programming第四版(补充0中未讲解的一些东西)4. 深入理解Linux内核第三版(系统运作原理)5. Building Embedded Linux Systems(内核定制与编译)6. Linux Kernel Primer(内核开发)7. Linux Kernel Development(内核开发)8. Linux Device Drivers(驱动开发)9. Essential Linux Device Drivers(驱动开发)0到5我看过,是非常好的书,特别是0,1,4。6到10我没看过,据道友们推荐,这几本也都很好。备注:读内核源码,最好用vim或者emacs,因为内核自带的makefile,内含自动生成cscope,tags索引的功能。cscope跟vim/emacs是无缝整合的,阅读代码非常好用,配合其它plugins,比source insight更强大。如果有体力,有时间,有不错的机器,做一遍lfs也会获得很多体验。原文地址:
如何学习linux编程
如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。
然 后再看Douglus E.Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技 巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。
然后学make file文件,只要知道一点就行,这样就可以准备编程序了。
然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然 后再看Douglus E.Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技 巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。 对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一 遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。 《Advanced Programing in Unix Envirement》 W.RichardStevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix NetworkPrograming》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容 易。
《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以 看它了,基本上系统的东西就由
《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。
《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。 《用 TCP/IP进行网际互连》Douglus.E.Comer一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套 要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还 有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个 中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您 看过Qterm的源代码,就会知道Qterm的telnet实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是 Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统 设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会有一个清晰的 认识。 《Linux Device Driver》2e,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的 是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超 出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。 原文地址:http://www.ithao123.com/networkprog/0003.html