我正在尝试扩展linux内核的内置xfs
模块。在this SO post之后,我现在可以在本地编译它。但为了避免与现有的内核xfs模块冲突,我想将我的扩展名重命名为xxfs
,而不更改源文件的名称。
我找到a related post,之后我将Makefile中的相关行更改为:
obj-$(CONFIG_XFS_FS) += xxfs.o
xxfs-objs := xfs.o
但是我说错误
make[1]: *** No rule to make target '/home/dev/tmp/xxfs/xfs.o', needed by '/home/dev/tmp/xxfs/xxfs.o'. Stop.
Makefile:1403: recipe for target '_module_/home/dev/tmp/xxfs' failed
make: *** [_module_/home/dev/tmp/xxfs] Error 2
make: Leaving directory '/usr/src/linux-headers-4.4.0-28-generic'
环境:
Ubuntu 16.04,内核4.4.0-28-generic。
修改
我通过
获得了xfs内核模块源文件apt-get source linux-source-4.4.0
linux-4.4.0/fs/xfs
复制到另一个目录(仅为了便于维护),目前为/home/dev/tmp/xxfs
要编译模块,我从make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
目录运行命令/home/dev/tmp/xxfs
,之后将在同一目录中生成xfs.ko
。
但是,在我更改Makefile
obj-$(CONFIG_XFS_FS) += xfs.o
到
obj-$(CONFIG_XFS_FS) += xxfs.o
xxfs-objs := xfs.o
其他所有内容都没有被触及,但我无法再使用相同的命令编译模块。