下面是一个网卡驱动的makefile,有很多地方不懂,拿出来和大家一起分析一下:

CURRENT= $(shell uname -r)

TARGET= asix

OBJS= asix.o

MDIR= drivers/net/usb

KDIR= /lib/modules/$(CURRENT)/build

SUBLEVEL= $(shell uname -r | cut -d '.' -f 3 | cut -d '.' -f 1 | cut -d '-' -f 1 | cut -d '_' -f 1)

ifneq (,$(filter $(SUBLEVEL),14 15 16 17 18 19 20 21))

MDIR = drivers/usb/net

endif

EXTRA_CFLAGS = -DEXPORT_SYMTAB #export-objs

PWD = $(shell pwd)

DEST = /lib/modules/$(CURRENT)/kernel/$(MDIR)

obj-m      := $(TARGET).o

default:

make -C $(KDIR) SUBDIRS=$(PWD) modules

$(TARGET).o: $(OBJS)

$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)

install:

su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"

clean:

$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

.PHONY: modules clean

-include $(KDIR)/Rules.make

第一个问题就是default下面到那句话,—C应该是改变它的目录到KDIR下面,然后在建立模块目标前回到模块源码目录,不知到这样理解对不对?

第二个问题:

$(TARGET).o: $(OBJS)

$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)

这句话应该怎么理解?asix.o依赖于asix.o?

第三个:

install:

su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"

这个su -c是什么意思?

|

第一个问题,—C是改变它的目录到KDIR下面,执行完该目录下的modules目标后返回当前目录

第二个问题等楼下大虾。。。。

第三个问题,su -c是切换到root用户,并执行引号内的命令

|

$(TARGET).o: $(OBJS)

$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)

第一行意思是, $(OBJS) 执行gcc编译, 目标符号是$(TARGET)

第二行:  ld 是link命令, ld_rflag la的flag

$@ 代表是当前的符号. 也就是这里的 $(TARGET)

最后成型的命令是   ld ld_flag -r -o asix.o asix.o

一般使用情况是:  OBJS 多个.o文件ld成一个 TARGET ..为了方便使用.

跟静态库ar 有点类似

linux驱动模块makefile,linux驱动makefile求解相关推荐

  1. linux驱动模块probe,linux 驱动之 probe 调用

    最近看到linux的设备驱动模型,关于Kobject.Kset等还不是很清淅.看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时 ...

  2. Linux内核驱动模块示例--Helloword及Makefile

    先看一个最简单的驱动程序: //hello.c #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE ...

  3. linux .pc文件make,简单的驱动makefile详解

    简单的驱动makefile详解 一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编 ...

  4. Linux驱动---Makefile

    基于hello.c的Makefile:(在我的<Linux驱动-模块化编程>) 执行模块的Makefile要进来 三次!!!!!!!! 第一次: KERNELRELEASE是内核源码树的一 ...

  5. LINUX驱动Makefile模板

    网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题.下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至 ...

  6. linux 内核 企鹅,Linux 内核 Makefile 体系简单分析

    众所周知,Linux内核是使用make命令来配置并编译的,那必然少不了Makefile.在内核目录树中我们可以看到内核编译系统的顶层Makefile文件.但是如此复杂.庞大的内核源码绝不可能使用一个或 ...

  7. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

  8. Linux 用qmake快速生成makefile

    1.简介: qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具.是qt工具包的一部分.在Unix&linux上写程式的人大概都碰过Makefile.用 ...

  9. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  10. linux增量编译不成功,Linux学习笔记-增量编译(Makefile进一步使用)

    增量编译 在VC中就是增量编译! 当某个cpp更新后,只编译这个cpp文件,称为增量编译. 在Linux中,通过控制Makefile实现增量编译的效果 Makefile中使用"依赖depen ...

最新文章

  1. JavaScript--'data-'的用法(1)
  2. python【力扣LeetCode算法题库】面试题 17.16- 按摩师(DP)
  3. 技术干货|如何在企业内部实现云信私有化?
  4. js string转number_Node.js 和 C++ 之间的类型转换
  5. 7-227 寻找大富翁 (25 分)
  6. 137.只出现一次的数字II
  7. Docker从理论到实践(九)------使用Dockerfile创建镜像
  8. acrobat PDF删除部分_迅捷PDF转换器3.2.0Mod会员版
  9. 诺顿企业版 V11.0
  10. GitHub 漫游指南
  11. 1寸证件照排版、1寸照片、1寸证件照尺寸,不改变图片大小改分辨率,不改变分辨率改变(保证分辨率)...
  12. torch学习 (二十九):周杰伦歌词数据集测试循环神经网络
  13. linux中centos8.4配置静态ip
  14. 删除kankan文件夹(迅雷7)
  15. linux中权限管理命令chmod
  16. CVPR-Disgusied faces in wild 2018 开放环境下对伪装的面部进行识别 --面部识别的一个子领域
  17. 菌体浓度测定方法/细菌计数方法
  18. Java视频教程(最适合Java初学者的经典入门视频)_讲 师:张孝祥
  19. 莱斯特大学计算机科学,莱斯特大学与纽约大学计算机科学专业哪个好?看完以下对比就懂了...
  20. 如何选择DHTMLX Gantt与DHTMLX Scheduler?

热门文章

  1. idea无法搜索插件问题解决
  2. 解决IntelliJ无法导入maven包的问题
  3. 关于解决GPS定位设备:GPS静态漂移的方法
  4. Bugzilla使用手册及解决方案
  5. Nginx 出现504 Gateway Time-out的解决方法
  6. jQuery循环使用相同类的元素
  7. 如何使用Sublime Text 2重新格式化HTML代码?
  8. %w(数组)是什么意思?
  9. 每日一则 LeetCode: Add Two Numbers
  10. 【持续更新】C++中string类使用总结