`
hududumo
  • 浏览: 238535 次
文章分类
社区版块
存档分类
最新评论

obj-y,obj-m 区别

 
阅读更多

目标定义是Kbuild Makefile的主要部分,也是核心部分。主要是定义了要编 译的文件,所有的选项,以及到哪些子目录去执行递归操作。

最简单的Kbuild makefile 只包含一行: 例子: obj-y += foo.o 该例子告诉Kbuild在这目录里,有一个名为foo.o的目标文件。foo.o将从foo.c 或foo.S文件编译得到。

如果foo.o要编译成一模块,那就要用obj-m了。所采用的形式如下: 例子: obj-$(CONFIG_FOO) += foo.o $(CONFIG_FOO)可以为y(编译进内核) 或m(编译成模块)。如果CONFIG_FOO不是y 和m,那么该文件就不会被编译联接了


Linux各级内核源代码的子目录下都有Makefile,大多数Makefile要嵌入主目录下的Rule.make,Rule.make将识别各个Makefile中所定义的一些变量。变量obj-y表示需要编绎到内核中的目标文件名集合,定义O_TARGET表示将obj-y连接为一个O_TARGET名称的目标文件,定义L_TARGET表示将obj-y合并为一个L_TARGET名称的库文件。同样obj-m表示需要编绎成模块的目标文件名集合。如果还需进行子目录make,则需要定义subdir-y和subdir-m。在Makefile中,用"obj-$(CONFIG_BINFMT_ELF)<wbr>+=<wbr>binfmt_elf.o"和"subdir-$(CONFIG_EXT2_FS)<wbr>+=<wbr>ext2"这种形式自动为obj-y、obj-m、subdir-y、subdir-m添加文件名。有时,情况没有这么单纯,还需要使用条件语句个别对待。Makefile中还有其它一些变量,如mod-subdirs定义了subdir-m以外的所有模块子目录。<wbr><br><br> Rules.make是如何使make进入子目录的呢?<wbr>先来看subdir-y是如何处理的,在Rules.make中,先对subdir-y中的每一个文件名加上前缀"_subdir_"再进行排序生成subdir-list集合,再以它作为目标集,对其中每一个目标产生一个子make,同时将目标名的前缀去掉得到子目录名,作为子make的起始目录参数。subdir-m与subdir-y类似,但情况稍微复杂一些。由于subdir-y中可能有模块定义,因此利用mod-subdirs变量将subdir-y中模块目录提取出来,再与subdir-m合成一个大的MOD_SUB_DIRS集合。subdir-m的目标所用的前缀是"_modsubdir_"。<wbr><br><br> 一点说明,子目录中的Makefile与Rules.make都没有嵌入.config文件,它是通过主Makefile向下传递MAKEFILES变量完成的。MAKEFILES是make自已识别的一个变量,在执行新的Makefile之前,make会首先加载MAKEFILES所指的文件。在主Makefile中它即指向.config。</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
评论

相关推荐

    vs运行matlab代码-Physically-based-Sound:基于物理的声音

    vs运行matlab代码 Physically-based-Sound 环境搭建 预处理 该部分代码参考项目 ...-y 3.5E+9 -p 0.34 -m -k -g -s -d 1 | tee -a 'precalc.log' # obj-1为模型名称,所在路径下应有obj-1.obj,obj-1.

    WebbrowserEx模仿IE实例源码

    WebbrowserEx模仿IE实例源码 ... Set objParent = objParent.Parent Loop Set mobjTopParent = objParent Set objParent = Nothing End If Set TopParent = mobjTopParent End Property

    matlab代码sqrt-M-BCJR-Algorithm:用于ISI通道均衡的MBCJR算法的MATLAB实现

    =步骤(obj,y,A_ext_LLR,N_0,M,SO) @input'y'收到符号。 @input'a_ext_LLR'每个符号的外部LLR信息。 @input'N_0'每个符号的噪声信息。 @在每个网格步骤输入“ M”个幸存者的数量。 每个符号的@

    高性能服务框架ZYS.zip

    $fileinfo = array('type'=&gt;'file','data'=&gt;array('path' =&gt;'/public/uploads/'.date('Ymd').'/'.$filename,'size'=&gt;$_FILES['file']['size'],'ext'=&gt;$upname[1])); var_dump(distributed::getInstance()-&gt;query...

    正则表达式

    x|y 匹配x或y {n} 精确匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个字符 [\b] 匹配一个退格符 \b 匹配一个...

    msgpack-python-0.4.2.tar

    return {'__datetime__': True, 'as_str': obj.strftime("%Y%m%dT%H:%M:%S.%f")} return obj packed_dict = msgpack.packb(useful_dict, default=encode_datetime) this_dict_again = msgpack.unpackb(packed_...

    让python json encode datetime类型

    实现代码如下: 复制代码 代码如下: import json from datetime import date, datetime def __default(obj): if isinstance(obj, datetime): return obj.strftime(‘%Y-%m-%dT%H:%M:%S’) elif isinstance(obj, date)...

    chuankouLINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S

    * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 0003H UNIT ?DT?CHUANKOU IDATA 000BH 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * *...

    css3 HTML5 Canvas炫酷3D线条延伸动画特效.zip

    obj.p.y = cy obj.y * scl; obj.s = scl; } var P = function(x, y, z) { this.x = x; this.y = y; this.z = z; this.s = 1; this.cl = 0; this.p = { x: 0, y: 0 }; }; P....

    ASP验证码组件ShotGraph

    obj.CreateImage x,y,8 '8是图片的颜色8位 obj.SetColor 0,55,126,222 obj.SetColor 1,255,255,255 obj.CreatePen "PS_SOLID",1,0 obj.SetBgColor 0 obj.Rectangle 0,0,x-1,y-1 obj.SetBkMode ...

    oracle 视图,函数,过程,触发器自动编译脚本

    nowtime_h=`date '+%Y%m%d%H%M'` #脚本执行的目录 dmpdir=/oracle_script/auto_recompile #初始化参数 cd #执行oracle 相关的环境变量, . .bash_profile cd $dmpdir #下面取出失效的对象('TRIGGER','PROCEDURE','...

    新版Android开发教程.rar

    SiRF 、 SkyPop 、 Sonic Network 、 Sprint Nextel 、 Synaptics 、 TAT 、意大利电信、西班牙电信、德州仪器、 T-M obile 和 Wind River 。 Mobile Mobile Mobile Mobile Operators Operators Operators Operators...

    proteus 串口调试

    OBJECT MODULE PLACED IN STARTUP.OBJ ASSEMBLER INVOKED BY: C:\Program Files\Keil2\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG EP LOC OBJ LINE SOURCE 1 $nomod51 2 ;--------------------------------...

    DSP实验报告(2).doc

    每个程序的链接配置文件根据实际情况的需 要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文 件都可以参考此例来完成: /*example1.cmd */ vectors.obj example1.obj -o example1.out ...

    oracle详解

    exp userid=test/test file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y 2. OWNER和TABLE,这两个选项用于定义EXP的对象。OWNER定义导出指定用户的对象;TABLE指定EXP的table名称,例如: exp...

    Django开发中的日志输出的方法

    开发环境:Ubuntu16.04+Django 1.11.9+Python2.7 一:使用自定义函数输出日志到log文件: ... '[%Y-%m-%d %H:%M:%S]', time.localtime( time.time())) # 转化时间格式 file_obj.write(%s\n % (str(log))) file_obj.c

    NodeLog统计方案yog-log.zip

    时间戳,支持自定义格式如%{%d/%b/%Y:%H:%M:%S %Z}t %i HTTP-header字段 %a 客户端IP %A server address %C 单个或全部cookie %D 请求消耗时间/ms %f 物理文件名称 %H ...

    rtl8188FU_linux_v5.2.11.1_22924.20170703.tar.gz

    obj-$(CONFIG_RTL8723BS_VQ0) += rtl8723bs_vq0/ 3、 W:\tinav2.5\package\firmware\linux-firmware\realtek.mk Package/r8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware) ...

    bat批处理文件实现复制、删除、创建文件夹、执行程序、打开文件

    xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z] ...

    吉布斯采样matlab代码-Optical-Character-and-digits-Recognition:这是概率图形模型课程的最终项目

    log_obj.m log_reg.m 数据文件- usps_digital.mat tr_X.txt tr_y.txt te_X.txt te_y.txt 要为USPS数字数据运行逻辑回归算法,请在matlab中运行以下文件- logistic_classify.m 以下是包含用于倾斜Ising模型结构的前向...

Global site tag (gtag.js) - Google Analytics