歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux文件系統Btrfs的Makefile分析

Linux文件系統Btrfs的Makefile分析

日期:2017/2/28 15:29:45   编辑:Linux教程

從linux內核2.6開始,內核編譯采用Kbuild系統。在內核裡面,Makefile分為三種,一種是kernel Makefile,一種是Kbuild Makefile,一種是ARCH Makefile。

Kbuild Makefile主要指明哪些代碼編譯進內核,哪些代碼編譯進模塊。下面是linux-3.7-rc2版的最新內核中btrfs文件夾下面的Makefile,我做一下注解,有利於理Kbuid Makefile的語法。

obj-$(CONFIG_BTRFS_FS) := btrfs.o

#等號右邊表示該模塊為btrfs模塊。

#obj-表示如何編譯。obj-y表示btrfs模塊將被編譯進內核,-m表示編譯成模塊,-n表示不編譯。

#如果CONFIG_BTRFS_FS被配置為y,則btrfs模塊被編譯進內核。

#(我所見的其他文件系統這裡用得是+=)

btrfs-y += super.o ctree.o extent-tree.o print-tree.o root-tree.o dir-item.o \
file-item.o inode-item.o inode-map.o disk-io.o \
transaction.o inode.o file.o tree-defrag.o \
extent_map.o sysfs.o struct-funcs.o xattr.o ordered-data.o \
extent_io.o volumes.o async-thread.o ioctl.o locking.o orphan.o \
export.o tree-log.o free-space-cache.o zlib.o lzo.o \
compression.o delayed-ref.o relocation.o delayed-inode.o scrub.o \

reada.o backref.o ulist.o qgroup.o send.o

#表示btrfs.o模塊依賴於等號後面的文件。

#btrfs-y或者-objs都表明左邊是一個模塊

#(我所見的其他文件系統這裡用得是:=)

btrfs-$(CONFIG_BTRFS_FS_POSIX_ACL) += acl.o

#如果CONFIG_BTRFS_FS_POSIX_ACL被選為y,則btrfs模塊將在原來基礎上再編譯一個acl.o文件。

btrfs-$(CONFIG_BTRFS_FS_CHECK_INTEGRITY) += check-integrity.o

#如果括號中的變量被配置為y,則btrfs模塊將在原來基礎上再編譯一個check-integrity文件。

不過讓我感到奇怪的是:在fs這個文件夾裡面,有很多的文件系統,他們的makefile都是先用的+=,然後用的:=,我有點懷疑這裡是不是寫錯了,

但是我是從內核源代碼中解壓的,不敢隨便懷疑。

也許是我對+=和:=的區別不太熟悉。請求高人指點。

Copyright © Linux教程網 All Rights Reserved