2015-04-07 24 views
0

我在內核編碼方面很新,而且我正在做一個學校任務。我應該添加一個系統調用內核並編譯它。 我所做的事情如下: 我在內核中創建了一個名爲syscalls的文件夾。make [1]:***沒有規則來製作'something.o'所需的內容,這是'something/built-in.o'所需要的。停止

我已經加入3個文件系統調用文件夾內:

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

make文件具有代碼只有一行如下

obj-y := syscall.o 

的syscall.c有一個方法以下簽名:

asmlinkage long sys_call_function(struct array_stats *stats, long data[],long size) 

然後我甲肝Ë增加了以下拱/ 86 /系統調用/ syscall_64.tbl

330  common syscall   sys_call_function 

然後我加入了大膽的文字婁內核的make文件 核心-Y + =內核/ MM/FS/IPC /安全/加密/塊/ 系統調用/

然後我去使清潔然後使-j3 但我收到以下錯誤:

make[1]: *** No rule to make target `syscalls/syscall.o', needed by `syscalls/built-in.o'. Stop. 

化妝:* [CS300]錯誤2 化妝:*等待未完成的工作....

任何一個可以請給我一些提示。我陷入困境,無法前進。

回答

0

使用這個補丁(針對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; 
+} 

我無法重現你的問題。你能發佈你的補丁嗎?

+0

感謝您的回覆。它是v3.19.1 –

相關問題