有没有Linux内核源码指导书籍

有没有Linux内核源码指导书籍,第1张

1.《Linux内核设计与实现》

本书重在原理。适合入门的最佳图书。作者是为2.6内核加入了抢占的人,对调度部分非常精通,而调度是整个系统的核心,因此本书是很权威的。

2.《深入理解Linux内核》

此书比上一本多了些细节。是Linux内核黑客在推荐图书时的首选。写的比较简单易懂,适合刚刚接触LINUX内核的。

此书图表很多,形象地给出了关键数据结构的定义,与《Linux内核源代码情景分析》相比,本书内容紧凑,不会一个问题讲解动辄上百页,有提纲挈领的功用,但是深度上要逊于《Linux内核源代码情景分析》。

3.《LINUX设备驱动程序(第3版)》

这书强调动手实践!但它是讲解“设备驱动”的,不是最核心的东西,而且有些东西没硬件的话无法实践,可能更适合驱动开发的程序员吧

其中关于同步与互斥、内存分配的部分,感觉很不错。

4.《Linux内核源代码情景分析》

好,很经典,是浙大教授毛德 *** 写的,可惜成书于2001年之后一直没有更新。分上下册。

很多是基于2.4内核讲解的需要注意。如果学习的话也建议学习2.6,2.6跟2.4比发生了很多显著改善,应该学习的。

全书内容博大精深,不是非常好懂,对细节问题描述比较清晰。但是感觉对内核的整体感觉不够强。另外缺少网络部分的分析。觉得不是很适合初学者。

5.《Linux内核源代码分析》

点评:面对中高级,这本书很好,对了解 *** 作系统是一本不可多得的好书。

6. 《LINUXKERNEL技术手册》

参考手册,很薄,值得一看。

7.《深入Linux内核架构》

这本书针对的是比较新的内核版本2.6.24;内容比较全面,深入浅出。

如果没有对Linux内核的初步结构的认识,那么会看得比较吃力。建议可以一边去翻在国内已经闻名已经久的四本Linux内核著作(《Linux内核原代码情景分析》、《Linux内核设计与实现》、《深入理解Linux内核》、《Linux设备驱动程序》),再一边看这本书,把这本书当作一个补充或者当作一个内核框架图谱说明书来阅读,收效会更好。

8.《Linux内核完全注释》

主要描述和注释了Linux0.11内核全部源代码。对于初学Linux内核 *** 作系统的人来讲,该书能够引领读者快速入门,并且能全面了解一个简单 *** 作系统的工作机理。对于进一步学习现在的Linux内核具有非常大的指导作用。对于学习嵌入式应用的技术人员来讲,通过《完全注释》一书的学习也能迅速融入嵌入式应用领域。

9.《Orange S:一个 *** 作系统的实现》

从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个 *** 作系统框架的完成过程。

复制代码

1 #ifndef __KERNEL__

2 # define __KERNEL__

3 #endif

4 #ifndef MODULE

5 # define MODULE

6 #endif

7

8 // 下面的是主要的内容

9 #include <linux/kernel.h>

10 #include <linux/module.h>

11 #include <linux/init.h>

12

13 MODULE_LICENSE("GPL")

14

15 static int year=2012

16

17 int hello_init()

18 {

19 printk(KERN_WARNING "Hello kernel, it's %d!\n",year)

20 return 0

21 }

22

23

24 void hello_exit()

25 {

26 printk("Bye, kernel!\n")

27 }

28

29 // 下面两个为关键的模块函数

30 module_init(hello_init)

31 module_exit(hello_exit)

复制代码

如果上面的代码看起来不太熟悉,那么需要查看以下相关的书籍,比如《Linux设备驱动程序,第三版》,也就是大名鼎鼎的LDD;

2、老式驱动模块编译方法:

直接写出make规则到makefile文件中,引用内核体系的头文件路径,举例如下:

复制代码

1 # The path of kernel source code

2 INCLUDEDIR = /media/GoldenResources/linux/linux-2.6.30/include

3

4 # Compiler

5 CC = gcc

6

7 # Options

8 CFLAGS = -D__KERNEL__ -DMODULE -O -Wall -I$(INCLUDEDIR)

9

10 # Target

11 OBJS = hello.o

12

13 all: $(OBJS)

14

15 $(OBJS): hello.c

16 $(CC) $(CFLAGS) -c $<

17

18 install:

19 insmod $(OBJS)

20

21 uninstall:

22 rmmod hello

23

24 .PHONY: clean

25 clean:

26 rm -f *.o

复制代码

这里有我是用的一个linux内核源代码路径:/media/GoldenResources/linux/linux-2.6.30/include ,注意设置到正确的源码路径。

尝试这编译:

复制代码

$make

gcc -D__KERNEL__ -DMODULE -O -Wall -I/media/GoldenResources/linux/linux-2.6.30/include -c hello.c

In file included from /media/GoldenResources/linux/linux-2.6.30/include/linux/kernel.h:11:0,

from hello.c:8:

/media/GoldenResources/linux/linux-2.6.30/include/linux/linkage.h:5:25: fatal error: asm/linkage.h: No such file or directory

compilation terminated.

make: *** [hello.o] Error 1

复制代码


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11113745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存