向PVFS工程中添加新文件
PVFS是一个分布式文件系统,位于ext3之上,向上支持hadoop等应用。整个系统都由C语言实现。回到主题,如果写了一个新的文件,如何编译通过?
首先,得让系统知道添加了这个文件。整个makefile就好像一个公司,src根目录下的makefile是董事长,并不直接管理具体的.c文件。那么谁具体负责.c文件呢?各个子目录下的module.mk文件负责。我们来看看src/apps/admin/module.mk有什么内容:
DIR := src/apps/adminADMINSRC := \$(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.cADMINSRC_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 即可
向PVFS工程中添加新文件相关推荐
- ios之Xcode工程中添加文件常用快捷键
1.Xcode某个工程中添加文件 有两种方式: 方式一:"command"+"n",弹出添加文件对话框. 方式二:在需要添加文件的工程目录下右键,选择" ...
- 【解决问题】Qt项目不能添加新文件Files are not automatically added to the CmakeLists.text file of the CMake project.
Qt项目不能添加新文件Files are not automatically added to the CmakeLists.text file of the CMake project. 在Qt项目 ...
- pandas向已经拥有数据的Excel文件中添加新数据
不知道大家有没有过相同的经历,就是我们向Excel表格中添加新数据的时候,经常会导致原先拥有的数据被覆盖掉了,那么如何解决这个问题呢,这里给出一种可行的方法.阅读此篇的基础是先理解pandas Dat ...
- java工程加包_Java工程中添加依赖jar包不起作用问题总结
Java工程中添加依赖jar包不起作用问题总结 此次总结两种方式的依赖问题 1 在Eclipse中添加依赖jar包不起作用问题 这种方式可能是Eclipse缓存,或者Eclipse还没有反应过来.例如 ...
- Android 驱动(17)---如何在linux中添加新的kernel module
如何在linux中添加新的kernel module 该SOP针对客户如何添加一个kernel module,并把生成的.ko打包进system.img的过程. 解决方案 L版本(version> ...
- Android内核开发:在源码树中添加新的app应用
本文是<Android内核开发>系列的第十二篇文章,上一篇文章介绍了如何从源码中删除出厂的app应用,本文则在此基础上,详细介绍一下如何在Android内核源码树中添加一个新的app应用. ...
- Qt中添加资源文件及资源文件的使用
1.将包含各种icon的名为 resource文件夹放在.pro所在的文件夹中 2.右键工程文件夹,添加新文件->Qt--->Qt资源文件->起名为resource,保存在.pro所 ...
- (解决 fatal error C1083: 无法打开包括文件:“xxxxxxxxx.h”: No such file or directory)VS和Eclipse添加新文件/文件夹路径步骤
Visual Studio和Eclipse添加新文件/文件夹路径步骤 向VS工程中添加文件夹 把新增的头文件添加到路径中 Eclipse添加头文件 向VS工程中添加文件夹 首先添加相关的文件夹和文件– ...
- 在VirtualBox中的Ubuntu中添加新硬盘
2019独角兽企业重金招聘Python工程师标准>>> 在VirtualBox中的Ubuntu中添加新硬盘 VitrualBox是不允许更改重置硬盘大小的,所以当硬盘不足时,只能添加 ...
最新文章
- Qt简介、安装及在Ubuntu14.04 32位上简单使用举例
- 如何将Swift数组转换为字符串?
- ORACLE数据库查看执行计划
- Leetcode 100. 相同的树 (每日一题 20210811)
- CatBoost讲解
- php代码在线base64解码,Base64在线编码解码实现代码 演示与下载
- oracle 执行java_oracle调用JAVA类的方法
- 当HTTP状态代码不足时:处理Web API错误报告
- windows 远程执行 cmd 命令的 9 种方法
- 关于数组增减Array 和list的区别
- Sql Server 性能优化之包含列
- DXGI中的flip显示模型
- hd计算机技术,BD和HD的区别是什么?
- 使用高德地图实现根据地名查询经纬度
- dw html5中怎么设置图片自动切换,DW制作九宫格全屏亮灯轮播图片且自动切换图片教程...
- Azure云平台之游戏
- MySQL数据库的卸载与安装
- linux服务器安装字体库
- 陷入可怕的人间“地狱”
- 矩阵实验:图形图像处理
热门文章
- 网页中嵌入Flash的方法讨论
- MathJax基础教程笔记
- 欧卡2在线服务器返回数据错误,omsi2开启时报错是怎么回事
- java_TCP/UDP整合
- MM32F103芯片J-Link调试无法读不到芯片 ID 号
- 【解决方案】森林火灾频发,如何通过国标GB28181智能监控分析系统构建一个安全的森林环境?
- 【知识图谱】什么是知识图谱?知识图谱的应用。知识图谱的数据模型(三元组 模型、属性图模型)。西游记中的知识图谱。
- eyeos 云计算操作系统
- [收藏]白话初级会计基础知识,从头讲到尾
- 【python debug】could not convert string to float: ‘File‘ got an unexpected keyword argument