Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108864
  • 博文数量: 40
  • 博客积分: 2058
  • 博客等级: 大尉
  • 技术积分: 409
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-07 16:49
文章分类

全部博文(40)

文章存档

2011年(3)

2010年(17)

2009年(14)

2008年(6)

我的朋友

分类: LINUX

2010-04-27 20:21:23

要想进行内核模块编程,makefile一定是少不了的。以下为转载的写makefile的一些规则,以方便以后使用。本文还蒋继续更新:。

来源linux-2.6.20.21/Documentation/kbuild/makefiles.txt
*  obj-y
+= foo.o 表示编build-in,obj-m += foo.o表示编成module.
* kbuild
会编译所有的$(obj-y)文件,然后调用$(LD) -r把这些文件合并到一个built-in.o文件中。这个built-in.o稍后会被父级Makefile link到vmlinux
* 用lib-y
:= checksum.o delay.o 会把checksum.o和delay.o合编成一个lib.a
* obj-$(CONFIG_EXT2_FS) += ext2
/表示,当CONFIG_EXT2_FS=y的时候,要跑到ext2/目录下并make
* EXTRA_CFLAGS, EXTRA_AFLAGS, EXTRA_LDFLAGS, EXTRA_ARFLAGS
 EXTRA_CFLAGS
是在用CC编译C代码的时候加flag的,
 EXTRA_AFLAGS是在编译汇编语言的时候加flag用的,
 EXTRA_LDFLAGS是在LD的时候加flag用的,
 EXTRA_ARFLAGS是在AR的时候加flag用的
* CFLAGS_aha152x.o
= -DAHA152X_STAT -DAUTOCONF表示只在编译aha152x.o的时候加 -DAHA152X_STAT -DAUTOCONF
* AFLAGS_head-armv.o := -DTEXTADDR=$(TEXTADDR) -traditional和上面差不多,表示在编译特定汇编文件时加flag
* $(src)
是Makefile所在目录的相对路径
* $(obj
)是目标文件保存在的目录的相对路径
*
cflags-y += $(call
cc-option
,-march=pentium-mmx,-march=i586)表示,如果$(CC)支持的话,-march=pentium-
mmx会加给cflags-y,不支持的话就加-march=i586。还有一些as-option,ld-option,等等,基本原理都一样
* 要编在本地机上直接可以跑的程序用hostprogs,例如hostprogs-y
:= bin2hex表示把当前目录下的bin2hex.c编译成一个可执行文件(Host Program)
* 在一个可执行文件中link其他目标文件的办法:
#scripts/lxdialog/Makefile
        hostprogs-y   := lxdialog
        lxdialog-objs := checklist.o lxdialog.o
表示checklist.c和lxdialog.c都会被编译且会在后面合并成lxdialog这个可执行文件
* 还有其他讲host program的,略过
* make clean
会自己设别一些文件并清除。手工指定清除的办法

        clean-files := devlist.h classlist.h表示指定删除这两个文件
        clean-dirs := $(objtree)/debian/表示删除这个目录及子目录
        subdir- := compressed/表示告诉? ......

 
阅读(918) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

regansong2014-12-17 01:46:26

你当年在学生时代就能有不错的水平,作为男生作为比你高两届的,我感到很惭愧.继续努力!祝顺利!