向PVFS工程中添加新文件

PVFS是一个分布式文件系统,位于ext3之上,向上支持hadoop等应用。整个系统都由C语言实现。回到主题,如果写了一个新的文件,如何编译通过?

首先,得让系统知道添加了这个文件。整个makefile就好像一个公司,src根目录下的makefile是董事长,并不直接管理具体的.c文件。那么谁具体负责.c文件呢?各个子目录下的module.mk文件负责。我们来看看src/apps/admin/module.mk有什么内容:

DIR := src/apps/admin

ADMINSRC := \
	$(DIR)/pvfs2-check-config.c \
	$(DIR)/pvfs2-set-debugmask.c \
	$(DIR)/pvfs2-set-mode.c \
	$(DIR)/pvfs2-set-eventmask.c \
	$(DIR)/pvfs2-set-sync.c \
	$(DIR)/pvfs2-ls.c \
	$(DIR)/pvfs2-ping.c \
	$(DIR)/pvfs2-rm.c \
	$(DIR)/pvfs2-stat.c \
	$(DIR)/pvfs2-statfs.c \
	$(DIR)/pvfs2-perf-mon-example.c \
	$(DIR)/pvfs2-mkdir.c \
	$(DIR)/pvfs2-chmod.c \
	$(DIR)/pvfs2-chown.c \
	$(DIR)/pvfs2-fs-dump.c\
	$(DIR)/pvfs2-fsck.c\
	$(DIR)/pvfs2-validate.c\
	$(DIR)/pvfs2-cp.c \
	$(DIR)/pvfs2-viewdist.c \
	$(DIR)/pvfs2-xattr.c \
	$(DIR)/pvfs2-touch.c \
	$(DIR)/pvfs2-remove-object.c \
	$(DIR)/pvfs2-ln.c \
	$(DIR)/pvfs2-perror.c \
	$(DIR)/pvfs2-check-server.c \
	$(DIR)/pvfs2-drop-caches.c

ADMINSRC_SERVER := \
	$(DIR)/pvfs2-mkspace.c \
	$(DIR)/pvfs2-migrate-collection.c \
	$(DIR)/pvfs2-change-fsid.c \
	$(DIR)/pvfs2-showcoll.c

从这可以看出,当前目录下所有的源文件都在module.mk中登记,src目录下的Makefile通过include关键字将这些makefile文件包含进来,直接从module.mk拉取相关信息。Makefile中关键代码如下:

include module.mk
include $(patsubst %, %/module.mk, $(MODULES))


其中,patsubst是字符串替换函数,宏MODULES表示所有包含文件module.mk的路径

举个例子,现在我实现了一个拷贝目录的功能,源文件名为pvfs2-dir-cp.c,存放于路径:src/apps/admin/。

打开src/apps/admin/下的module.mk,在$(DIR)/pvfs2_cp.c下方添加一行$(DIR)/pvfs2_dir_cp.c,如下:

$(DIR)/pvfs2-cp.c \
$(DIR)/pvfs2-dir-cp.c \

 

回到src目录,执行 make && make install 即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值