Linux内核的.config 配置文件和defconfig 配置文件

  Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配置工具

一、图形化界面的操作

  menuconfig 图形化的配置工具需要 ncurses 库支持。ncurses 库提供了一系列的 API 函数供调用者生成基于文本的图形界面,因此在使用 menuconfig 图形化配置界面之前需要先在Ubuntu 中安装 ncurses

sudo apt-get install build-essential
sudo apt-get install libncurses5-dev

  以 RK3568 为例,在内核源码目录下输入以下命令,打开图形化配置界面。

export ARCH=arm64
make rockchip_linux_defconfig
make menuconfi

二、.config 配置文件介绍

  图形化配置界面配置好了以后,会得到一个.config 配置文件。在编译内核的时候会根据这个.config 文件来编译内核。
  当我们使用 make menuconfig 的时候,会通过 mconf 程序去解析 Kconfig 文件,然后生成对应的配置文件.config。mconf 程序源码在内核源码 scripts/kconfig 目录下。有了.config 配置文件以后,内核就可以根据这个配置文件来编译内核,比如控制某些驱动编译进内核,或者控制某些驱动不编译内核。config 会通过 syncconfig 目标将.config 作为输入然后输出需要文件,这里我们重点更关注auto.conf 和 autoconf.h。
在这里插入图片描述
  在 auto.conf 文件中,存放的是配置信息。
在这里插入图片描述
  在内核源码的顶层 Makefile 中会包含 auto.conf 文件,以此引用其中的变量来控制 Makefile的动作,如哪些驱动编译,哪些驱动不编译。如:
  auto.conf 文件

include include/config/auto.conf
CONFIG _A=y

  顶层 Makefile 中包含 auto.conf 文

ifeq ($(dot-config),1)
include include/config/auto.conf
Endif

  内核源码下 drivers/A/Makefile

obj-$(CONFIG _A) +=A.o

  注:obj-y 就是编译进内核,obj-m 就是编译成 ko 文件。
  在 autoconf.h 中,是 C 语言代码。用来配合编译时的条件选择。如下图所示
在这里插入图片描述

三、defconfig 配置文件

  defconfig 文件和.config 文件都是 linux 内核的配置文件,defconfig 文件在内核源码的arch/(ARCH)/configs 目录下,是 Linux 系统默认的配置文件。比如说瑞芯微平台 Linux 源码默认的配置文件为:kernel/arch/arm64/configs/rockchip_linux_defconfig。
  .config 文件位于 Linux 内核源码的顶层目录下,编译 Linux 内核时会使用.config 文件里面的配置来编译内核镜像。
  如果.config 文件存在,make menuconfig 界面的默认配置也就是当前.config 文件的配置,如果修改了图形化配置界面的设置并保存,那么.config 文件会被更新。
  如果.config 文件不存在,使用命令“make XXX_defconfig”命令会根据 arch/$(ARCH)/configs目录下的 XXX_defconfig 自动生成.config。make menuconfig 界面的默认配置则为 defconfig 文件中的默认配置,比如说瑞芯微平台 Linux 内核源码目录下输入“make rockchip_linux_defconfig” 会自动生成.config 文件。那么此时rockchip_linux_defconfig 的配置项和.config 的配置项是相同的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/139428.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Typora+PicGo+Github+CSDN梦幻联动

文章目录 一、快速搭建个人免费图床二、Typora图片实现自动上传三、Typora图片上传到CSDN出现错误 一、快速搭建个人免费图床 之前写过一篇 快速搭建个人免费图床 的文章,但是每次都要把图片拖到PicGo里面才能生成链接很麻烦,而且在本地用Typora写的文章…

【jmeter】接口测试流程

1、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性,可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程,允许通过多个线程并发取样或通过独…

自动驾驶学习笔记(五)——绕行距离调试

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 调试内容 打开在线编辑器 打开pl…

广州华锐互动:VR模拟高楼层建筑应急逃生,提供身临其境的虚拟体验

随着城市化进程的不断加速,高层建筑越来越多地出现在我们的生活中。然而,高层建筑的安全问题也日益凸显。一旦发生火灾、地震等突发事件,如何迅速、安全地逃离高楼成为了人们关注的焦点。近年来,虚拟现实(VR&#xff0…

List小练习,实现添加图书,并且有序遍历

SuppressWarnings({"all"})public static void main(String[] args) {List list new LinkedList(); // List list new Vector(); // List list new ArrayList();list.add(new Book1("红楼小梦",35.5,"曹雪芹"));list.add(new B…

Linux:Mac VMware Fusion13以及CentOS7安装包

Linux:Mac VMware Fusion13以及CentOS7安装包 1. Mac VMware Fusion132. CentOS7安装包3. 安装 1. Mac VMware Fusion13 下载官网地址:https:www.vmware.com/products/fusion/fusion-evaluation.html 2. CentOS7安装包 注意是m芯片需要使用arm架构的i…

【STM32】--基础了解

一、STM32来历背景 1.从51到STM32 (1)单片机有很多种 (2)STM32内核使用ARM,但是ARM不一定是STM32 (3)ATM32是当前主流的32位高性能单片机 (4)STM32的特点:高…

如何从一门编程语言过渡到另一门编程语言?

在数字时代,软件开发领域不断进化,不同编程语言层出不穷。作为一位富有经验的开发者,你可能曾面临过一个重要的问题:如何顺利过渡到一门全新的编程语言? 这个问题不仅是对技术领域的学习,更是对职业生涯的…

海通国际:颐海国际第三方业务表现承压,关联方收入恢复

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,由于颐海国际(01579)发布2023年半年报:23H1主营业务收入同比-2.7%至26.16亿元,归母净利润同比36.0%至3.58亿元,海通国际发布关于颐海国际…

Confluence 内容管理

1.创建页面 功能入口: Confluence →指定空间→创建 功能说明: (1)为保证页面风格统一,建议各类内容应统一选择对应模板创建 (2)页面应配置可查看用户,以及用户编辑、查看权限 …

循环日程安排问题(分治法)

函数接口定义&#xff1a; void Plan(int a[][N],int k); 裁判测试程序样例&#xff1a; #include #include <math.h> #include using namespace std; #define N 100 void Plan(int a[][N],int k); int main() { int i,j,a[N][N],k,size; cin>>k; sizepow(2,k)…

PCB布线时如何保证100M以上信号的稳定性?

PCB布线时是电子工程中非常重要的环节&#xff0c;对于保证信号的稳定性和完整性至关重要&#xff0c;若电子工程师遇上100M以上信号的布线需求&#xff0c;该如何设计来保证其稳定性&#xff1f;下面或许能给你些参考。 1、选择合适的传输介质 对高速信号&#xff0c;选择合适…