新闻  |   论坛  |   博客  |   在线研讨会
makefile中的一些注释
0750long | 2010-02-10 21:51:48    阅读:4257   发布文章

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/表示告诉? ......

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客