linux驱动模块makefile,linux驱动makefile求解
下面是一个网卡驱动的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求解相关推荐
- linux驱动模块probe,linux 驱动之 probe 调用
最近看到linux的设备驱动模型,关于Kobject.Kset等还不是很清淅.看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时 ...
- Linux内核驱动模块示例--Helloword及Makefile
先看一个最简单的驱动程序: //hello.c #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE ...
- linux .pc文件make,简单的驱动makefile详解
简单的驱动makefile详解 一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编 ...
- Linux驱动---Makefile
基于hello.c的Makefile:(在我的<Linux驱动-模块化编程>) 执行模块的Makefile要进来 三次!!!!!!!! 第一次: KERNELRELEASE是内核源码树的一 ...
- LINUX驱动Makefile模板
网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题.下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至 ...
- linux 内核 企鹅,Linux 内核 Makefile 体系简单分析
众所周知,Linux内核是使用make命令来配置并编译的,那必然少不了Makefile.在内核目录树中我们可以看到内核编译系统的顶层Makefile文件.但是如此复杂.庞大的内核源码绝不可能使用一个或 ...
- 详解linux下auto工具制作Makefile源码包(制作篇)
2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一. 概述 为了更好的制作configure ...
- Linux 用qmake快速生成makefile
1.简介: qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具.是qt工具包的一部分.在Unix&linux上写程式的人大概都碰过Makefile.用 ...
- linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库
Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...
- linux增量编译不成功,Linux学习笔记-增量编译(Makefile进一步使用)
增量编译 在VC中就是增量编译! 当某个cpp更新后,只编译这个cpp文件,称为增量编译. 在Linux中,通过控制Makefile实现增量编译的效果 Makefile中使用"依赖depen ...
最新文章
- JavaScript--'data-'的用法(1)
- python【力扣LeetCode算法题库】面试题 17.16- 按摩师(DP)
- 技术干货|如何在企业内部实现云信私有化?
- js string转number_Node.js 和 C++ 之间的类型转换
- 7-227 寻找大富翁 (25 分)
- 137.只出现一次的数字II
- Docker从理论到实践(九)------使用Dockerfile创建镜像
- acrobat PDF删除部分_迅捷PDF转换器3.2.0Mod会员版
- 诺顿企业版 V11.0
- GitHub 漫游指南
- 1寸证件照排版、1寸照片、1寸证件照尺寸,不改变图片大小改分辨率,不改变分辨率改变(保证分辨率)...
- torch学习 (二十九):周杰伦歌词数据集测试循环神经网络
- linux中centos8.4配置静态ip
- 删除kankan文件夹(迅雷7)
- linux中权限管理命令chmod
- CVPR-Disgusied faces in wild 2018 开放环境下对伪装的面部进行识别 --面部识别的一个子领域
- 菌体浓度测定方法/细菌计数方法
- Java视频教程(最适合Java初学者的经典入门视频)_讲 师:张孝祥
- 莱斯特大学计算机科学,莱斯特大学与纽约大学计算机科学专业哪个好?看完以下对比就懂了...
- 如何选择DHTMLX Gantt与DHTMLX Scheduler?