Linux内核根目录中的配置文件.config中包含了许多宏定义,

作者&投稿:春泊 (若有异议请与网页底部的电邮联系)
linux内核源码中的结构体中的宏定义怎么理解~

cp file1 file2 file3 directory
即将文件file1 file2 file3复制到directory
可以使用通配符,比如
cp file? *File* other directory
将file开头后面一个字符、包含File字符的文件和other文件复制到directory
如果拷贝目录,需要-r参数:
cp -r souredir destdir

对!!不管是哪里的宏,只要用的是C语言,那么基本都是一个意思,当然GNU的C可能对标准C有了一些自己的扩展,这个比较少,稍微了解即可,99%都是标准,也是所有编译器就都通用!

一、Linux内核的配置系统由三个部分组成,分别是:
1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则;
2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能;
3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写 Makefile 和配置文件就可以。

二、Make menuconfig过程分析

1、scripts文件夹存放的是跟make menuconfig配置界面的图形绘制相关的文件,我们作为使用者无需关心这个文件夹的内容
2、读取arch/arch/$ARCH/Kconfig以及各子目录下的Kcondig文件,生成配置条目。
$ARCH由linux内核根目录下的makefile文件决定
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
Kconfig文件中为配置信息的宏定义,与我们在make menuconfig图形界面看到的信息一致。
例如:
config CPU_S3C2410_DMA
bool
depends on S3C2410_DMA && (CPU_S3C2410 || CPU_S3C2442)
default y if CPU_S3C2410 || CPU_S3C2442
help
DMA device selection for S3C2410 and compatible CPUs
因此,Kconfig文件很重要的作用就是:定义配置宏、相关依赖关系、帮助信息
3、读取内核根目录下.config文件,生成配置选项:[*]编译进内核 [M]编译为模块 [ ]不编译
arch/arm/configs/文件夹下存放了一些配置模板
我们可以通过cp /arch/arm/configs/xx_defconfig .config来使用这些配置模板
通过图形界面变更配置选项会自动更新到.config文件中
make disclean 会删除.config
4、编译过程根据.config生成 Linux内核根目录下的 include/config/auto.conf文件
CONFIG_EEPROM_93CX6=m
CONFIG_DM9000=y
根目录Makefile以及子目录的Makefile根据auto.conf生成编译条件
obj-$(CONFIG_DM9000) += dm9000.o //obj-m += dm9000.o
5、编译过程根据.config生成Linux内核根目录下的 include/linux/autoconf.h文件
.config 或 auto.conf 中定义要编译为 m 模块的项,如:
CONFIG_DEBUG_NX_TEST=m
在 autoconf.h 中会被定义为:
#define CONFIG_DEBUG_NX_TEST_MODULE 1

.config或auto.conf 中定义为编译为 y 的选项,如:
CONFIG_DM9000= y
在 autoconf.h 中会被定义为:
#define CONFIG_DM9000 1
autoconf.h中是.config或者auto.conf中配置信息的另一种体现形式,它是站在源码的角度,供源码使用的C语言宏定义。
6、总结
我们在使用make menuconfig时,首先会确定架构arch,然后读取arch目录的Kconfig中的配置宏定义,生成编译条目,然后读取Linux内核根目录下的.config选项, 将.config中的配置信息显示在图形界面上[*] [M] or []。我们在图形界面中更改配置选项会自动保存到.config文件中。编译过程根据.config随后生成auto.conf文件,它决定了makefile中各个文件的编译类型,静态编译进内核、编译成模块、不编译;同时生成autoconf.h,它以C语言宏定义的形式表达了 各个文件是否被编译,源码中会判断某文件是否被编译进行不同的处理。

三、将自定义文件添加进内核配置系统
1、修改文件目录下Kconfig文件
添加:
config HELLO
tristate "just a test hello"
default y
---help---
This is a test
//tristate 或 bool 表示可选择种类数量3[*][M][ ]、2
// "just a test hello"将作为标题显示在配置的图形界面
2、修改文件目录下makefile文件
obj-$(CONFIG_HELLO) += hello_drv.o
3、make menuconfig 我们会在字符设备驱动的界面看到 ust a test hello 并且默认编译进内核

4、make编译内核发现
autoconfig.h 自动添加 #define CONFIG_HELLO 1
auto.conf 自动添加 CONFIG_HELLO=y


LINUX基本的操作系统结构是什么?
3. \/etc目录 \/etc目录存放着各种系统配置文件,其中包括了用户信息文件\/etc\/passwd,系统初始化文 件\/etc\/rc等。Linux正是靠这些文件才得以正常地运行。 4. \/root目录 \/root 目录是超级用户的目录。 5. \/lib目录 \/lib目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文 件。这些...

redhatenterpriselinux7的内核程序存储于那个目录
管理类文件夹: \/boot 该目录默认下存放的是Linux的启动文件和内核,例如LILO或GRUB的文件。 \/initrd 它的英文含义是boot loader initialized RAM disk,就是由boot loader初始化的内存盘。在linux内核启动前,boot loader会将存储介质(一般是硬盘)中的initrd文件加载到内存,内核启动时会在访问真正的根文件...

操作系统实验指导:基于Linux内核目录
在这个操作系统实验指导中,我们将深入探讨基于Linux内核目录的系统。首先,了解Linux的基本机制和使用方法是关键。第1章涵盖了Linux的概述,介绍了Linux的发展历程,其特点,以及当前流行的版本。实验体系部分阐述了操作系统实验的现状,选择Linux作为实验平台的原因,以及实验设计的核心思想和体系构成。第2章...

一个linux系统里面能有多个kernel吗?如果可以应该怎么添加呢?_百度...
\/lib\/modules\/ 里面都是按内核版本号分别保存的其他内核需要和提供的文件,主要是内核模块。以及针对这个内核的开发需要的相应文件(不光是头文件,虽然开发主要是需要 C Header)。模块目录具体结构请看一些专业的介绍资料吧。题外:\/usr\/src 里面一般存放内核的源代码,如果是自己编译的内核,或者某些...

LINUX内核源码剖析 TCP\/IP实现下目录
Linux内核源码剖析 TCP\/IP实现下目录概览1. 预备知识 应用层工具: iputils, net-tools, iproute2 内核接口: procfs, sysctl, sysfs, ioctl, netlink 网络加速: TSO\/GSO, i\/o at, slab分配器, RCU2. 网络体系结构 概述: 协议, 系统调用, 传输层, 设备无关接口 套接口缓存: sk_buff结构...

linux操作系统的分区有哪些种类?各分区主要作用是什么?
Linux下一切都是文件,不存在分区的概念,在Linux下说的分区只是磁盘管理和数据组织的需要。Linux使用标准的目录结构,在安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。\/根目录 ┃ ┏━━┳━━━┳━━━┳━━━╋━━━┳━...

什么是linux内核
Linux 内核设计的理念主要有这几个点:MutiTask,多任务 SMP,对称多处理 ELF,可执行文件链接格式 Monolithic Kernel,宏内核 MutiTask MutiTask 的意思是多任务,代表着 Linux 是一个多任务的操作系统。多任务意味着可以有多个任务同时执行,这里的「同时」可以是并发或并行:对于单核 CPU 时,可以让...

linux操作系统和boot目录下面都是什么文件?
\/proc:虚拟目录,是内存的映射;\/sbin:系统管理员命令存放目录;\/usr:最大的目录,存许应用程序和文件;\/usr\/X11R6:X-Window目录;\/usr\/src:Linux源代码;\/usr\/include:系统头文件;\/usr\/lib:存放常用动态链接共享库、静态档案库;\/usr\/bin、\/usr\/sbin:这是对\/bin、\/sbin的一个补充。

linux下的root,bin, cdrom,etc,initrd,lib分别主要放哪些文件的啊?_百 ...
\/boot\/vmlinuz-%{KRELEASE} 可引导的、压缩的内核 \/boot\/initrd-%{KRELEASE}.img 包含了支持 Linux 系统两阶段引导过程所需要的必要可执行程序和系统文件 \/boot\/config-%{KRELEASE} 包括kernel的make config \/boot\/message cpio格式的打包文件,存放Grub的配置信息,里面包括了图片,文字说明等内容\/boot目录,grub...

Linux下内核文件drivers\/usb\/serial\/option.c,Ubuntu中在哪
1,直接添加进内核。a, 比如进入drivers\/char\/目录,把xxx.c文件拷贝到该目录b, 修改drivers\/char\/Kconfig文件,自定义仿照其他选项,添加自己的选项XXX。c, 修改drivers\/char\/Makefile文件,添加obj-$(CONFIG_XXX) += xxx.od, 进入内核根目录,make menuconfig,进入device drivers->character devices在这里面找到XX...

宛城区19187034424: Linux内核根目录中的配置文件.config中包含了许多宏定义, -
符洪秋水: 一、Linux内核的配置系统由三个部分组成,分别是:1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则;2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能;3、配置工具:...

宛城区19187034424: LINUX根目录下的bin boot dev etc 这几个目录的作用是什么? -
符洪秋水: /bin:存放最常用命令; /boot:启动Linux的核心文件; /dev:设备文件; /etc:存放各种配置文件; /home:用户主目录; /lib:系统最基本的动态链接共享库; /mnt:一般是空的,用来临时挂载别的文件系统; /proc:虚拟目录,是内...

宛城区19187034424: linux根目录下5个主要的目录,及目录的功能 -
符洪秋水: (1)/ : 根目录 (2)/bin :存放启动时所需要的普通程序 (3)/boot : 存放内核及启动所需要的文件 (4)/dev :存放设备相关的文件 (5)/etc :存放系统的配置文件 (6)/home:存放用户文件的主目录,用户数据( cd ~ 可进入自己的主目...

宛城区19187034424: 如何提取linux kernel的配置文件 -
符洪秋水: 下载一份内核代码,解压缩.执行命令 make defconfig 会在根目录下面生成 ".config" 文件.这个文件即是linux kernel的配置文件.

宛城区19187034424: linux下原本的的内核配置文件在哪? -
符洪秋水: 装完系统之后这个配置文件会存在/boot/config版本号 如/boot/config-2.6.32-358.2.1.el6.x86_64

宛城区19187034424: linux的kernel config在哪里 -
符洪秋水: 第一步: 进入/usr/src目录 第二步: make menuconfig,应该会出现配置界面了

宛城区19187034424: Linux内核中的Makefile文件有什么作用? -
符洪秋水: Linux内核中Makefile 的作用是根据配置的情况,构造出需要编译的源文件列表,然后分别编译,并把目标代码链接到一起,最终形成 linux 内核二进制文件.由于 Linux 内核源代码是按照树形结构组织的,所以 Makefile 也被分布在目录树中....

宛城区19187034424: linux文件系统挂载的配置文件有哪些? -
符洪秋水: 通常文件系统挂载的配置文件在/etc/fstab中,它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它.同时fsck、mount、umount的等命令都利用该程序./etc/fstab 是启动时的配置文件,不过,实际 filesystem ...

宛城区19187034424: Linux内核中的Kconfig文件是用来做什么的? -
符洪秋水: 2.6内核的源码树目录下一般都会有两个文文:Kconfig和Makefile.分布在各目录下的Kconfig构成了一个bai分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单.在内核配置make menuconfig(或xconfig等)...

宛城区19187034424: 求教:linux下哪个文件是内核配置方案 在哪里 -
符洪秋水: /usr/src/linux-kernel-xxxxxx/.config 一般是这个目录,发行版不同会有差异

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网