学习linux底层驱动开发有什么经典的参考书?

如题所述

结构、操作系统、体系结构、编译原理、计算机网络你全修过

我想大概可以分为4个阶段,水平从低到高
从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码

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

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

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

内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发
参考书如下《linux device drivers》,黑话叫ldd
《linux kernel development》,黑话叫lkd
《understading the linux kernel》,黑话叫utlk
《linux源码情景分析》
这四本书为搞内核的必读书籍

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

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

建议学习路径:

首先先学学编辑器,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.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《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设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-16
《linux设备驱动程序》
现在应该是第三版了
写驱动的圣经啊
第2个回答  2011-02-16
嵌入式驱动开发圣经
第3个回答  2011-02-27
《linux设备驱动程序》百度文库里能直接下载免费电子书,中文的
第4个回答  2011-02-16
gdk128说的对,从他的名字就知道,gdk

学习linux底层驱动开发有什么经典的参考书?
《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会 有一个清...

学习linux系统,看那几本书比较好
《UNIX环境高级编程》是 Unix\/ Linux 程序员案头必备的一本书籍。可以说,Linux 程序员如果没有读过这本书,就好像基督教徒没有读过圣经一样,是很难让人理解的。这本书概括了 Linux 编程所需的一切理论框架、主要系统函数、多进程编程、乃至 Linux 网络通信。《Linux设备驱动开发详解:基于最新的Linu...

10本Linux内核书籍推荐
05《Linux内核完全注释》本书适合系统编程爱好者,有助于读者深刻理解x86系统,提高阅读代码能力。06《奔跑吧Linux内核》本书内容丰富,讲解清晰,适合有一定Linux基础的人员,包括开发人员、研究人员、嵌入式开发人员和Android底层开发人员等。07《Linux内核修炼之道》本书语言通俗易懂,内容涵盖内核学习方法到...

从事linux 下c开发,要学哪些知识?推荐一下每个学习阶段的书籍,越详细...
这方面有很多经典书籍,其中入门比较好的有:《嵌入式Linux应用开发完全手册》 韦东山著 内核与驱动编程类: 《linux设备驱动开发详解》 宋宝华著 《linux内核设计与实现》 Robert Love著 (学内核最好读物)linux应用编程类: 《Unix环境高级编程》 (被誉为“圣经”)《linux程序设计》...

有没有好的关于嵌入式Linux方面的书籍?大家给推荐推荐
1、《深入理解Linux内核》(第三版)2、《Linux内核源代码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Network Programming》(UNP)2、《TCP\/IP详解》3、《Linux内核编程》4、《Linux设备驱动开发》(LDD)5、《Linux高级程序设计》 杨宗德著 硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410...

学习linux驱动开发需要先学习UNIX环境高级编程这本书吗?
《UNIX环境高级编程》是你学习操作系统非常好的方式(大学讲的“操作系统”完全就是扯蛋 ),多写几次fork,把内核代码中task_struct结构大概看一下,你就知道什么是进程了,还要去背那些过时的甚至是错误的概念?以后你再看内核方面的书你就会知道这些有多重要,事实上没有系统级编程的知识,你要直接看...

如何学习linux,有什么入门的经典书籍?
底层直接和硬件打交道,所以这个也要 6.了解linux\/unix 我想至少你要会操作吧,了解unix的API 7.软件工程\/编译原理 这方面的经典书去www.china-pub.com可以搜到很多 我觉得APUE这种书不适合初学者,还是先看看UPE之类的吧 APUE: 《advanced programming in the unix environment》 《unix环境高级编程》 作者:W....

想要从事 linux嵌入式方面的应用软件开发。我该怎么学呢?
韦东山的那本书挺经典,卓越的链接:http:\/\/www.amazon.cn\/mn\/detailApp\/ref=sr_1_1?_encoding=UTF8&s=books&qid=1274700325&asin=B001DCEA46&sr=8-1 《嵌入式Linux应用开发完全手册》以S3C2410、S3C2440开发板为例,从分析硬件上电执行的第一条指令开始,到构造出一个类似PDA、基于Linux的...

linux下C语言偏向底层的软件开发需要学什么?
底层开发有不同的分支,其实说白了,你熟悉了C语言,顶层底层开发没什么区别,你只需了解机制即可。我建议你首先阅读《程序员的自我修养》这本书 http:\/\/www.amazon.cn\/exec\/obidos\/ASIN\/B0027VSA7U\/snowwest-23 这本书比较通俗详细的解释了一些C语言、系统结构的机制,算是入门书吧 关于内核、驱动...

怎么学习linux
学习Linux步骤:1、先了解了解基础吧,找一本薄一点的,浅一点的书,了解一下什么是linux。有个基本了解即可。不建议马上看《鸟哥的Linux私房菜》,这本书很不错,如果你了解linux基础之后再看,对你可以说是不受益匪浅都不行。没基础看《鸟哥的Linux私房菜》比较痛苦,内容很多。2、了解之后,在自己...

相似回答