一段代码的解释

    1. 内核编译源码

      KERNEL_VER = $(shell uname -r)

      obj -m +=  test.o

      EXTRA_CFLAGS = -g -o0

      build: kernel_modules

      kernel modules:

              #make -C /lib/modules/'uname-r'/build M=$(PWD) modules

              make  -C /lib/modules/$(KERNEL_VER)/build M=$(PWD) modules

    clean:

              make -C /lib/modules/$(KERNEL_VER)/build M=$(PWD) clean

         

    2.代码解读

       1. 由于Linux版本的不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,一次来调动对应            版本的API ,在/usr/include/linux/version.h 有linux_version_code和kernel_version(a,b,c)的定义。

       2.obj -y += xxx.o 该模块编译到zImage。

         obj -m +=xxx.o 该模块不会编译到zImage,生成一个独立的xxx.ko静态编译。

       3.extra_flags EXTRA_变量被makefile文件所有的执行命令语句所使用 $(EXTRA_CFLAGS)是使用$(CC)/gcc编译C文件的            编译参数选项,CFLAGS += $(EXTRA_CFLAGS),在外部传入CFLAGS会将makefile中的变量CFLAGS中的值覆盖掉,而

        采用EXTRA_FLAGS变量的目的是在外部传入CFLAGS变量时不会将makefile中该变量的值被覆盖掉,而是将相应的值加上          去。

       4.M = $(PWD) 意思是返回到当前目录继续读入、执行当前的makefile。当前目录查找模块源码,将其编译,生成.ko文件。

       

      参考链接

      1.https://blog.csdn.net/qq_15437667/article/details/69490325

      2.https://blog.csdn.net/SoaringLee_fighting/article/details/79676261

      3.https://blog.csdn.net/qq_29350001/article/details/50780378

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值