linux php的源码目录结构,LINUX内核源码目录结构分析和配置

内核版本 2.6.31

做嵌入式开发一般都是进行LINUX内核的移植,要想移植成功就需要知道每个模块代码的位置,也要弄懂源码文件的组织形式。因此,大概的分析下源码的目录结构都以后的学习是很有必要的。

/**********************************************************************************************************************************************************/  arch

与体系结构相关的代码。对应于每个支持的体系结构,有一个相应的子目录如x86、arm等,每个体系结构子目

录下包含几个主要子目录:

.boot   启动内核所需的平台特有代码

.kernel 体系结构特有特征(如SMP)的实现

.mm 与体系结构相关的内存管理代码

.lib 与体系结构相关的通用函数的实现

arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录

下,其中比较重要的包括

kernel  内核核心部分

mm      内存管理

math-emu    浮点单元仿真

lib   硬件相关工具函数

boot    引导程序

pci      PCI总线和

power    CPU相关状态

block       部分块设备驱动程序

crypto       常用加密和散列算法如 AES、SHA等 还有一些压缩和CRC校验算法。

/*********************************************************************************************************************************/

drivers

放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block 下为块设备驱动程序,比如

ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block/genhd.c

中的device_setup()。它不仅初始化硬盘,也初始化网络,因为安装nfs文件系统的时候需要网络;

fs

文件系统代码,每个支持的文件系统有相应的子目录,如cramfs,yaffs,jffs2等 。

include

包括编译内核所需的大部分头文件,与平台无关的头文件放在include/linux子目录下,平台相关的头文件如

include/asm-arm

init

这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核

心如何工作的好的起点之一。

kernel

主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同

样,和体系结构相关的代码在arch/*/kernel中。

lib

库函数代码

Mm

这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等;而和体系

结构相关的内存管理代码则位于arch/*/mm/,例如arch/i386/mm/Fault.c;

net

网络支持代码

sound

音频设备驱动代码

Scripts

描述文件,脚本,用于对核心的配置;

documentation

关于内核各部分的通用解释和注释

ipc

进程间通信的代码。

security

主要是一个SELinux的模块。

Modules

模块文件目录,是个空目录,用于存放编译时产生的模块目标文件。

/**********************************************************************************************************************************/

在每个子目录下,都有一个 Makefile 和一个Readme 文件,仔细阅读这两个文件,对内核源码的理解很有用。 其中顶层目录下的 Makefile 负责整个内核的编译,编译的时候递归的调用各个目录下的 Makefile 文件,最终将产生内核的可执行映像文件。

Makefile:分布在Linux内核源码中的Makefile定义了Linux内核编译的规则。Makefile  决定编译哪些文件、 怎样编译这些文件 、按什么顺序连接这些文件。config:在配置内核时生成的一个文件,根据.config来决定使用哪些Makefile。

变量:

bool          两种取值:y、n

tristate      三种取值:y、n、m

string        字符串

hex           十六进制数据

int           十进制数据

menuconfig:  用于生成菜单

config:      生成配置选项

depend on    依赖关系

default      默认值

select       自动选择

source       读入另一个Kconfig文件

help         帮助信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值