当前位置:  技术问答>linux和unix

linux驱动makefile求解

    来源: 互联网  发布时间:2016-11-20

    本文导语:  下面是一个网卡驱动的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 |...

下面是一个网卡驱动的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 有点类似

    
 
 

您可能感兴趣的文章:

  • 求解windows下硬盘安装linux如何用linux引导
  • Linux Shell编程从初学到精通 第四章课后习题2 求解
  • linux命令求解释....
  • 求助linux下mysql 求解!
  • 关于linux shell的一个不明白的地方。求解
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么? iis7站长之家
  • linux 内核一条语句求解
  • 小弟求解LINUX下SHELL编程问题
  • LINUX如何取进程信息,求解!!!
  • linux切换用户遇到的问题,求解!
  • linux上的媒体播放(高分在线求解)
  • 求解linux的网络设置
  • vmware linux分区问题--求解
  • 关于linux分区的问题~~~~大伙给个主意~~~40分求解
  • 急急急!!!高分求解linux 2.6 内核安装网卡的问题
  • 求解此linux命令意思~~~!!!!!!!
  • linux grep 正则表达式 求解释
  • 菜鸟求解linux 信号问题
  • 小弟没写过shell,求解 linux shell 命令
  • 秒爆,求教育,求解释,linux 的select()函数
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • linux中makefile大小写问题
  • 关于linux2.6的makefile
  • 求助:makefile,驱动与linux内核的关系?
  • linux下面用makefile编译的问题,请高手指点。
  • linux 安装问题make: *** 没有指明目标并且找不到makefile。 停止
  • 菜鸟问题:linux下的makefile...
  • makefile 中定义的 -D_LINUX_和 LINUX有区别吗?
  • linux源代码中的makefile
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • Linux环境下,“PC机的驱动”与“嵌入式驱动”有什么区别?
  • linux驱动 单片机驱动
  • linux:怎么在驱动中调用IIC驱动?
  • linux下一个驱动怎么调用另一个驱动
  • redhat linux 9 与WNI xp共存一硬盘,显卡为 ATI RADEON 9600 可linux给出的驱动却是Vesa 的,我从驱动列表里选择了ATI RADEON 9600可是
  • Linux环境下,如何一个驱动中调用另外一个驱动
  • 我的网卡在redhat7.3下不能自动驱动,但我有for linux的驱动程序,请问如何才能驱动我的网卡,我是菜菜,请详细说明,谢谢!
  • Linux 9.0+865G,只能上到640×480,Intel官方站点的最新驱动安装失败,那位有驱动?
  • Linux设备驱动(第三版)- 字符设备驱动 - 例子
  • Linux源代码中ata驱动为什么要调用pci驱动的代码
  • 请教有关linux驱动开发,按关机键关机时,驱动应作哪些结束工作?
  • 小弟之前学过wince驱动,想入们linux驱动
  • 请问, linux 驱动中, IO 口变化了,驱动如何通知应用程序?
  • 官方都只发布Windows驱动,无原理图,如何自已为它写Linux驱动?提供点手段思路
  • 关于Linux 2.6平台下,自定义的USB HID设备是系统提供驱动程序还是需要自己完成驱动程序?
  • 关于LINUX下1024*768显示问题,是不是因为没有驱动显卡才不能设置,如果是的话应该怎么驱动
  • linux的驱动 和 android的驱动 有区别吗?
  • 我的笔机本装的是redhat7.2,从网上下了个显卡驱动(xxx.o的文件),请问怎样安装这个驱动?(我以拷到linux盘下)?
  • linux 2.6.15 中被编译为模块的驱动test.ko,应该放在什么路径下才能使得在需要该驱动时,由内核自动加载?谢谢
  • 请问做好的驱动,发布给用户的时候,用户必须要在各自的Linux中重新编译驱动源码才能使用吗?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3