news 2026/6/15 22:05:43

[Linux笔记]内核裁剪

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[Linux笔记]内核裁剪

文章目录

  • 1、Linux内核裁剪
    • 1.1、使用make menuconfig情况下的工作流
      • 1.1.1、加载开发板默认配置
      • 1.1.2、添加自己的模块选项到make menuconfig菜单
      • 1.1.3、在make menuconfig勾选刚添加的选项
      • 1.1.4、把修改后的.config保存成新的xxx_defconfig
      • 1.1.5、编译
    • 1.2、不使用make menuconfig情况下的工作流
  • 2、总结

1、Linux内核裁剪

目标:

  1. 不使用make menuconfig,增加/减少Linux内核编译输出的模块
  2. 搞清楚Kconfig.configxxx_defconfigMakefile之间的关系

1.1、使用make menuconfig情况下的工作流

1.1.1、加载开发板默认配置

将 arch/arm/configs/100ask_imx6ull_defconfig复制到 Linux项目的根目录下,并重命名为为.config

$make100ask_imx6ull_defconfig

1.1.2、添加自己的模块选项到make menuconfig菜单

  1. 如果要在100ask_imx6ull_defconfig的配置基础上添加自己的配置可以👇
  2. 在相应的目录下编写驱动程序,例如在drivers/input/misc/下编写100ask_adxl345-spi.c
  3. drivers/input/misc/下找到Kconfig文件并修改
... config INPUT_ADXL34X tristate"Analog Devices ADXL34x Three-Axis Digital Accelerometer"default nhelpSay Y hereifyou have a Accelerometer interface using the ADXL345/6 controller, and your board-specific initialization code includes thatinits table of devices. This driver can use either I2C or SPI communication to the ADXL345/6 controller. Select the appropriate methodforyour system. If unsure, say N(but it's safe to say"Y"). To compile this driver as a module, choose M here: the module will be called adxl34x.... config INPUT_ADXL34x_MOD tristate"100ask SPI bus connection"depends on INPUT_ADXL34X&&SPI default mhelpSay Y hereifyou have ADXL345/6 hooked to a SPI bus. To compile this driver as a module, choose M here: the module will be called 100ask_adxl34x-spi....

1.1.3、在make menuconfig勾选刚添加的选项

make menuconfig的GUI界面勾选编译选项后,会修改.config的编译配置

$makemenuconfig

被make menuconfig修改后的.config文件如下

...CONFIG_INPUT_ADXL34X=y...CONFIG_INPUT_ADXL34x_MOD=m...

👆这些变量名都会在编译时被读取到Kconfig同级目录的Makefile中,例如drivers/input/misc/的Makefile如下所示

... obj-$(CONFIG_INPUT_ADXL34X)+=adxl34x.o... obj-$(CONFIG_INPUT_ADXL34x_MOD)+=100ask_adxl345-spi.o...

1.1.4、把修改后的.config保存成新的xxx_defconfig

这里的xxx_defconfig == 100ask_imx6ull_defconfig

$makesavedefconfig $mvdefconfig arch/arm/configs/my_name_defconfig

1.1.5、编译

# 如果obj-m, 则👇即可makemodules# 如果obj-y, 则👇即可makezImage

1.2、不使用make menuconfig情况下的工作流

1.1.3章节中,直接手工修改.config文件即可

2、总结

  1. xxx_defconfig:文件用于记录配置好的编译配置
  2. .config:内核当前的编译配置,存在于内核的顶层目录,在make xxx_defconfig后出现,从 arch/…/configs/xxx_defconfig 生成 .config
  3. make menuconfig:修改.config,手动编辑 .config 可替代 menuconfig
  4. Kconfig:定义make menuconfig的菜单项
  5. Kconfig同级目录的Makefile:读取.config中的CONFIG_XXX变量来决定编译行为,通过 obj- $ (CONFIG_XXX) 响应配置
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:26:59

一分钟了解GLM-4.6V-Flash-WEB能做什么

一分钟了解GLM-4.6V-Flash-WEB能做什么 你有没有过这样的体验:刚看到一个惊艳的视觉大模型介绍,兴致勃勃点开文档,结果卡在“怎么用”这一步——要装环境、配依赖、调参数、写接口……还没开始推理,人已经累了。 GLM-4.6V-Flash…

作者头像 李华
网站建设 2026/6/15 19:05:10

工业自动化中rs485modbus协议源代码解析与应用

以下是对您提供的博文内容进行 深度润色与专业重构后的版本 。我以一位深耕工业通信十余年的嵌入式系统工程师视角,将原文从“技术文档”升维为 可读、可信、可用的实战指南 :去除AI腔调与模板化表达,强化工程现场的真实语境、踩坑经验与设计权衡;结构上打破传统“引言…

作者头像 李华
网站建设 2026/6/15 11:22:50

语音情感识别太神奇!Emotion2Vec+ Web界面操作全记录

语音情感识别太神奇!Emotion2Vec Web界面操作全记录 内容目录 为什么语音情感识别突然变得实用了?Emotion2Vec Large系统到底强在哪?从零开始:Web界面完整操作流程两种识别粒度怎么选?utterance和frame实战对比结果不…

作者头像 李华
网站建设 2026/6/15 12:27:41

实测Qwen-Image-Edit-2511的LoRA功能,工业设计更高效

实测Qwen-Image-Edit-2511的LoRA功能,工业设计更高效 你有没有为一张工业设计图反复修改过十几次? 客户说:“这个机械臂关节太僵硬,加点流线感”; 又说:“底座材质换成磨砂金属,但别改结构”&a…

作者头像 李华
网站建设 2026/6/15 13:22:48

Fun-ASR适合新手吗?科哥开发的系统上手体验

Fun-ASR适合新手吗?科哥开发的系统上手体验 刚接触语音识别的新手常会问:这个模型要编译环境、装CUDA、写Python脚本、调参改配置……我连麦克风都还没点开,是不是得先学三个月PyTorch? Fun-ASR不是这样。它由科哥基于钉钉与通义…

作者头像 李华
网站建设 2026/6/15 12:33:03

从零到一:LVGL在STM32上的心跳时基与任务调度优化

从零到一:LVGL在STM32上的心跳时基与任务调度优化实战指南 1. 嵌入式GUI开发的核心挑战与LVGL优势 在工业HMI和智能家居面板等实时性要求高的场景中,图形用户界面(GUI)的流畅度直接影响用户体验。传统嵌入式GUI开发面临三大痛点:资源占用高…

作者头像 李华