Linux编程入门

简介: Linux下开发学习步骤   1、先熟悉linux系统的常用命令。  2、深入学习emacs或者vim。值得你花半年时间系统学习!以后我们就是用这个编辑器来写程序的了,经过配置,emacs完完全全就是一个IDE了,像代码跳转,自动补齐(智能感应)以及其他的一些好用功能。

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,在网上搜搜,教程很多的。

 

原文地址:http://www.linuxdiyf.com/viewarticle.php?id=53499

 

 

 

 

学习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也会获得很多体验。

原文地址:http://topic.csdn.net/u/20091023/09/6faa79ed-d07f-42a0-b83a-b1b2e13ab7d2.html?13274

 

 

 

 

如何学习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

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
12天前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
173 73
|
14天前
|
项目管理 敏捷开发 开发框架
敏捷与瀑布的对决:解析Xamarin项目管理中如何运用敏捷方法提升开发效率并应对市场变化
【8月更文挑战第31天】在数字化时代,项目管理对软件开发至关重要,尤其是在跨平台框架 Xamarin 中。本文《Xamarin 项目管理:敏捷方法的应用》通过对比传统瀑布方法与敏捷方法,揭示敏捷在 Xamarin 项目中的优势。瀑布方法按线性顺序推进,适用于需求固定的小型项目;而敏捷方法如 Scrum 则强调迭代和增量开发,更适合需求多变、竞争激烈的环境。通过详细分析两种方法在 Xamarin 项目中的实际应用,本文展示了敏捷方法如何提高灵活性、适应性和开发效率,使其成为 Xamarin 项目成功的利器。
34 1
|
14天前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
27天前
|
Linux 程序员 开发者
源社区的兴起:从“代码隐士”到Linux引领的“全球编程嘉年华”
在编程的古老森林中,曾有“代码隐士”默默耕耘,惧怕智慧外泄。直到“开源”春风拂过,源社区如全球编程嘉年华盛开!开源文化颠覆了“独门秘籍”的传统,像“武林秘籍共享”般在网络上公开,鼓励知识传播与智慧碰撞。程序员组队开发,分享代码,提升科技实力。Linux则从“首席大厨”变身为“总导演”,以强大内核调制出诱人应用,引领潮流并推动技术创新。加入这场没有血腥厮杀,只有知识盛宴的“编程版《饥饿游戏》”吧!与全球开发者共享编程的乐趣与成就感!别忘了带上你的“独门秘籍”,可能下一个改变世界的创意就在其中!
55 7
|
23天前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
22 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
1月前
|
存储 Ubuntu Linux
Linux基础入门
Linux基础入门
16 1
|
1月前
|
监控 Shell Linux
探索Linux操作系统下的Shell编程之魅力
【8月更文挑战第4天】本文旨在通过一系列精心设计的示例和分析,揭示在Linux环境下进行Shell编程的独特之处及其强大功能。我们将从基础语法入手,逐步深入到脚本的编写与执行,最终通过实际代码案例展现Shell编程在日常系统管理和自动化任务中的应用价值。文章不仅适合初学者构建扎实的基础,同时也为有一定经验的开发者提供进阶技巧。
38 11
|
1月前
|
Ubuntu Linux 开发工具
深入探索Linux内核模块编程
【8月更文挑战第4天】在这篇文章中,我们不仅将探讨Linux内核模块的基础知识,还将通过一个实际的例子来展示如何编写一个简单的内核模块。我们将从理论出发,逐步过渡到动手实践,最终实现一个可以在Linux系统上运行的模块。文章的目标是为读者提供足够的信息和知识,以便他们能够自己编写内核模块,从而对操作系统的内部工作原理有更深入的了解。
|
14天前
|
网络协议 Linux Shell
探索Linux操作系统:从基础到高级编程
【8月更文挑战第31天】本文旨在为读者提供一条清晰的路径,从Linux操作系统的基础知识出发,逐步深入到高级编程技巧。我们将一起揭开Linux神秘的面纱,了解其内部工作原理,并通过实际代码示例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你带来新的视角和技能提升。
|
14天前
|
Linux
探索Linux操作系统:命令行与脚本编程基础
【8月更文挑战第31天】在这篇文章中,我们将一起踏上一段旅程,深入探索Linux操作系统的奥秘。通过学习命令行的使用和编写简单的脚本,你将能够更高效地与你的计算机进行交流。无论你是新手还是有经验的用户,本文都将为你打开一扇通往Linux世界的大门。准备好了吗?让我们开始吧!