转载:http://emb***/Column/7565.html
1、Linux内核如此庞大(几万个文件),目录又分为很多层,它是如何将各层目录下的文件关联起来的?

linux内核通过层层目录管理,形成了一个树形目录[内核源码树],这是一个树形结构。从数据结构管理方面看,对于一颗非标准树,还是有办法将其进行遍历的,只是算法比较复杂而已。那么在linux内核源码的这棵树,就是
就是通过Kconfig文件建立各层子目录之间的连接,通过Makefile文件来选择各个目录下的对应的文件是否被编译,而.config文件就是总控制台,控制Makefile文件去编译指定的程序代码文件。而这一切控制关系是有Kconfig文件建立起来的。

2、Linux支持如此多的架构(X86、ARM、AVR、mips等等),为何我们在使用某一架构的芯片,比如x210时,其他架构的代码不会被编译?并且同为ARM架构下的其他系列SOC架构相关的代码不被编译?

make xx_defconfig和make menuconfig结合生成正确的.config文件
make xx_defconfig生成一个基础的。默认的.config文件,此文件的内容就包含了架构相关的东西,所以在进行linux内核源码编译时,根据.config文件的基本配置,寻找架构相关的代码进行编译和设置相关的代码进行编译。总之以.config这个控制台为准。
make menuconfig只是为了修改一些驱动模块和要编译的一些程序,没有架构相关。

3、在编译内核前,执行命令:make menuconfig的意义为何?
make menuconfig就是以菜单的形式打开内核源码的树形结构,然后程序员在默认配置的基础上自行配置和选择需要编译的模块代码。

其实能做这个工作的命令有很多,比如:
•make config:基于文本的最为传统的配置界面,太复杂,不直观,不推荐使用。
•make xconfig:基于图形窗口模式的配置界面,直观明了,Xwindow界面下推荐使用。
•make oldconfig:如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦,可以使用。
•make menuconfig:基于文本选单的配置界面,直观明了,字符终端下推荐使用。

大概好像这几种吧,其实还有一种就是,手动修改.config文件,呵呵!相信基本上没人会去干这种事的。

4.编译内核时,执行命令:make zImage的意义为何?
*
目的:生成zImage或者uImage的内核镜像。

当然,有人在疑问了,在编译Firefly的RK3288开发板时,执行的命令是make firefly-rk3288.img ,而不是上面的任何一个,其实这是Firefly修改过的方法了,其实说白了也就是一个名字而已。这个不要太过纠结,想具体了解的话,答案就在Firefly提供的内核源码内。

转载于:https://www.cnblogs.com/Ocean-Star/p/9235837.html

Linux内核中Makefile、Kconfig和.config的关系相关推荐

  1. Linux内核中makefile有什么作用?深入解析makefile工作过程和原理

    Table of Contents Makefile 中的变量 常用的变量有以下几类: 1) 版本信息 2) CPU 体系结构:ARCH 3) 路径信息:TOPDIR, SUBDIRS 4) 内核组成 ...

  2. Linux内核中Makefile、Kconfig、

    核心:学习过数据结构的童鞋应该知道,对于一棵非标准树,还是有办法将其进行遍历的,只是算法比较复杂而已.那么在Linux内核源码的这棵树,就是通过Kconfig文件建立各层子目录之间的连接,通过Make ...

  3. 解析linux内核中makefile,.config以及Kconfig的作用

    申明,下面这篇文章是原文,本文参考了这篇文章,这篇文章分析得比较透彻,下面是链接. https://zhuanlan.zhihu.com/p/28461589 首先我们要知道makefile文件是什么 ...

  4. linux内核和w,Linux内核中Makefile、Kconfig和.config的关系

    转载:http://emb.hqyj.com/Column/7565.html 1.Linux内核如此庞大(几万个文件),目录又分为很多层,它是如何将各层目录下的文件关联起来的? linux内核通过层 ...

  5. Linux内核的Makefile和kconfig解读

    一.概述 在内核编译中如何将各个目录树中的文件组织起来编译是一个很重要的问题,并且要根据用户配置来编译特有的内核.为了解决这个问题,内核使用两种文件,Makefie和Kconfig.分布到各目录的Kc ...

  6. Linux内核中的同步原语:自旋锁,信号量,互斥锁,读写信号量,顺序锁

    Linux内核中的同步原语 自旋锁,信号量,互斥锁,读写信号量,顺序锁 rtoax 2021年3月 在英文原文基础上,针对中文译文增加5.10.13内核源码相关内容. 1. Linux 内核中的同步原 ...

  7. Linux内核模块下载到板子,在Linux内核中增加新驱动模块

    开发环境 开发板:A33-Vstar 开发板系统: Linux/arm 3.4.39 Kernel Ubuntu版本:Ubuntu14.04 ----------------------------- ...

  8. 【正点原子Linux连载】第三十五章 Linux内核顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. i.MX 6ULL 驱动开发 二十九:向 Linux 内核中添加自己编写驱动

    一.概述 Linux 内核编译流程如下: 1.配置 Linux 内核. 2.编译 Linux 内核. 说明:进入 Linux 内核源码,使用 make help 参看相关配置. 二.make menu ...

最新文章

  1. 关于char(M)和varchar(N)的区别
  2. UA MATH564 概率论IV 次序统计量例题2
  3. webpack搭建自己的项目
  4. 4.10 风格代价函数-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  5. 0666 | IPC_CREAT
  6. 引领三消新模式 《梦幻花园》商业化分析
  7. 微软遭遇XP SP3疯狂重启尴尬境地
  8. 北京大学药学院张亮仁教授/刘振明研究员课题组博士后招聘启事
  9. Flutter基础—绘画效果之装饰容器
  10. OpenCV自适应阈值分割函数:adaptiveThreshold()介绍
  11. Specified key was too long; max key length is 767 bytes解决方案
  12. linux怎么实时查看目录下是否有文件生成
  13. 杀死提交的hadoop任务
  14. css的checkbox样式,css自定义checkbox样式的方法总结
  15. 数字电子技术基础是计算机专业,数字电子技术基础
  16. 按键精灵post请求_手把手教你使用按键精灵post登陆网页
  17. Java对接谷歌邮箱-代码及其谷歌邮箱账号配置
  18. 计算机的音量找不到了,音量控制不见了_电脑右下角调音量的小喇叭没有了,是怎么回事?该......
  19. Android 源代码分享
  20. 网络攻击机制和技术发展综述

热门文章

  1. R语言 朴素贝叶斯分类预测
  2. 现在学java的都是傻子?
  3. 总结 10 年前端经验,谈谈前端人如何更快地成长
  4. css居中最佳方案,CSS 水平、垂直居中的5种最佳方案
  5. wpf 进度条两侧圆角_[原译]WPF绘制圆角多边形
  6. python中and和or的惰性求值特点_python中的惰性求值
  7. 图片 富文本 粘贴_用C++实现富文本控件(中): 撤销
  8. ftp ssl java_FTP(四)实现FTP,SSL加密
  9. php 利用csv导,php 导入/导出 csv 文件
  10. 排序算法java 简书_手撕算法---常见排序算法java实现