[写给想深入学习Linux开发的网友]Linux应用程序开发到内核开发的简明手册。
序言,Linux/Unix社区的版块不热闹,菜鸟太多,前辈太忙,偶把自己这几年的Linux学习的过程讲讲,希望能给你们有点帮助,
引导初学者学习的方向,少走弯路linux 安装,事半功倍,同时也是抛砖引玉,请过来人热烈发言。
1.首先熟悉Linux
建议在Windows上安装VMwareWorkstation6.5.0(以下简称VM),下载种子在上找。
安装好VM后,在VM里安装LinuxFedoracore4或则最新的LinuxFdrora12,下载网址:
在Winodws上用开源的putty,或则SecureCRT通过SSH访问VM里的linux.
Winodws和Linux间copy文件可以通过开源的Winscp,或则在VM里开启文件共享,或则在linux上开启SMB服务。
建议熟悉文本界面上常用的shell命令。其实linux的图形界面也比较友好,在文本界面通过startx可以步入GUI。
这类书籍太多了,自己去找两本美国作者写的linux入门书。
2.在Linux上,用C,C++做应用程序开发(服务器程序,即非GUI程序)。
建议看精典的书《Unix环境中级编程》,W.RichardStevens著。网路编程可以看《TCP/IP解读》三卷书.
学习Makefile的写法。
我习惯在linux上启用smb服务,在windowsxp上用sourceinsight编辑C、C++代码,通过SecureCRT访问linux,执行make命令,
整个工程手动生成。其实也有前辈喜欢用VI,我通常不用,除非没有可以选择的编辑器。
要是有VC的开发经验,学习上去很快,恐怕2周才能上手。
3.步入Linux内核开发。
内核开发的学习难度要比Linux应用程序开发大3倍左右。基本上,有一年的linux应用开发经验,就可以主动步入到linux内核开发。
必读的书籍;《LinuxDeviceDrivers》深入分析linux内核源代码 pdf,《UnderstandingTheLinuxKernel》深入分析linux内核源代码 pdf,《LinuxKernelDevelopment》(分别简称LDD,ULK,LKD)。LDD,ULKlinux命令vi,我从卓越网或则当当网买了纸质版的。其实PDF格式的电子版也有,你们可以google.
学习编译内核,配置内核,用新内核启动系统.
学习写内核模块,了解内核常用的API。
可以剖析TCP/IP合同栈,网卡驱动等等。
比如TCP/IP合同栈,精典的书:
W.RichardStevens著《TCP/IP解读》三卷书.
RFC文档。
lwIP,一个开源的TCP/IP合同栈,比Linux自己的TCP/IP合同栈要简单。
开源的合同剖析工具:wireshark。
学习网路技术,可以参考我在VC版的帖子: