Linux kernel make[1]:***没有规则将目标设置为'something/build-in.o'所需的'something.o'。停止

Linux kernel make[1]:***没有规则将目标设置为'something/build-in.o'所需的'something.o'。停止,linux-kernel,system-calls,Linux Kernel,System Calls,我对内核编码非常陌生,我正在做一项学校作业。我应该向内核添加一个系统调用并编译它。 到目前为止,我所做的工作如下: 我在内核中创建了一个文件夹,称之为syscalls 在该syscall文件夹中,我添加了3个文件: 1 syscall.c 2syscall.h 3生成文件 make文件只有一行代码,如下所示 obj-y := syscall.o syscall.c有一个具有以下签名的方法: asmlinkage long sys_call_function(struct array_stats

我对内核编码非常陌生,我正在做一项学校作业。我应该向内核添加一个系统调用并编译它。 到目前为止,我所做的工作如下: 我在内核中创建了一个文件夹,称之为syscalls

在该syscall文件夹中,我添加了3个文件:

1 syscall.c 2syscall.h 3生成文件

make文件只有一行代码,如下所示

obj-y := syscall.o
syscall.c有一个具有以下签名的方法:

asmlinkage long sys_call_function(struct array_stats *stats, long data[],long size)
然后,我在arch/x86/syscalls/syscall_64.tbl中添加了以下内容

330     common  syscall         sys_call_function
然后,我将下面的粗体文本添加到内核的Make文件中 core-y+=kernel/mm/fs/ipc/security/crypto/block/syscalls/

然后我去做清洁,然后做-j3 但我得到以下错误:

make[1]: *** No rule to make target `syscalls/syscall.o', needed by `syscalls/built-in.o'.  Stop.
make:[cs300]错误2 make:*等待未完成的工作


谁能给我一些提示吗。我被卡住了,无法前进。

对v4.0-rc7使用此修补程序

diff --git a/Makefile b/Makefile
index 54430f9..874ac96 100644
--- a/Makefile
+++ b/Makefile
@@ -884,7 +884,7 @@ export mod_sign_cmd


 ifeq ($(KBUILD_EXTMOD),)
-core-y         += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
+core-y         += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ xyz/

 vmlinux-dirs   := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
                     $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
diff --git a/xyz/Makefile b/xyz/Makefile
new file mode 100644
index 0000000..0096b34
--- /dev/null
+++ b/xyz/Makefile
@@ -0,0 +1 @@
+obj-y := abc.o
diff --git a/xyz/abc.c b/xyz/abc.c
new file mode 100644
index 0000000..1edff5b
--- /dev/null
+++ b/xyz/abc.c
@@ -0,0 +1,4 @@
+int somefunc(int somevar)
+{
+       return somevar + 2;
+}
我无法重现你的问题。你能发布你的补丁吗