Linux内核的编译与配置

Linux内核的配置

在编译内核之前首先得先配置内核,通常是敲入make menuconfig来配置。(不过嵌入式开发的时候我好像挺少用到的)
Linux内核的配置系统由下面3个部分组成
  • Makefile:分布在Linux内核的源码中,定义Linux内核编译规则
  • 配置文件(Kconfig):给用户提供配置选择的功能
  • 配置工具:。。。
    使用make menuconfig命令后,会生成.config文件,该文件会记录哪些部分被编译入内核、哪些部分被编译为内核模块。其实工作之后发现,至少在我工作的地方是这样的。会有一个product_config,给开发人员选择是否开启某些配置项,之前我在往SD卡驱动里面添加代码的时候,需要从外部的product_config中新增项,同时在Kconfig文件新增项,这样的话我可以在代码里面新增入自己添加的宏定义。

简而言之:Kconfig中定义该config是否开启,在Makefile中依据这个config是否开启来进行相应的编译。
obj-$(config) +=foo.o config =y or n or m

对于Makefile 的简易介绍
目标定义
        e.g: obj-y += foo.o
        表示要由foo.c或者foo.s文件编译得到foo.o并链接进内核,obj-m表示该文件要作为模块编译,obj-n形式的目标不会被编译。
多文件模板的定义
多个文件组合编译成一个模块,需要采用模块名加-y的后缀来定义模板的组成文件
e.g:


        obj-$(config1) += ext2.o #需要编译ext2模块与否

        ext2-y := balloc.o dir.o file.o .......#如果需要的话,编译该模块需要的文件

        ext2-$(config2) += acl.o  #根据配置项config2,ext2还需要链接的文件

        ext2-$(config3) += xattr.o xattr_trusted.o #根据配置项config3, ext2还需要链接的文件
目录层次的迭代
obj-$(config) += ext2/ #当config为y或者m的时候,kbuild会把ext2目录列入向下迭代的目标中。这个在编译的时候,方便将编译命令作用到整个目录(包括目录下的子目录)。
Kconfig的语法简易介绍:(之后再研究,现在感觉能读懂就行~)
配置选项
    大多数的内核配置选项都对应着Kconfig中的一个配置选项(config)
    e.g:
    config CONFIGNAME
        bool "MODULE version support"
        #bool 数据的类型, 后面的是输入提示
        help 
            .....#帮助信息
在内核中新增驱动代码目录和子目录的实例
在内核中增加目录和子目录,需要为相应的新增目录创建Makefile和Kconfig文件,而新增目录的父目录中的Kconfig和Makefile也需要修改。
    e.g:新增一个test目录,test有一个子目录testUser.
    1. 需要在新增的test目录下加入Kconfig文件
    2. 为了使该Kconfig生效需要修改test父目录的Kconfig,增加:
        source "drivers/test/Kconfig"
    3. 在新增的test目录下,加入Makefile,该Makefile中需要有对于testUser的子目录的遍历,这样编译的时候才可以把子目录也编译了:obj-$(config1) += testUser/
    4. 同时testUser目录中也需要加入自己的编译的Makefile
    5. 为了编译的时候能编译整个的test目录,所以需要在test目录下的Makefile里面添加:
        obj-$(config2) += test/
    6. 以上为新增一个目录需要注意的东西
小工具
secureCRT这个软件在公司也用,两个用处:
1. 可以在windows窗口通过ssh来访问虚拟机里面的Linux系统,并进行命令的操作
    (需要在Linux系统里面安装ssh的client和server)
2. 可以作为串口工具
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值