5

将系统调用添加到内核后,我尝试编译内核。
它运行了 2 个小时,最后抛出

对 <我添加的系统调用> 的未定义引用

我添加的系统调用

知道发生了什么。

内核 3.9.3

遵循的步骤是 -

  1. 从www.kernel.org获取内核代码。 wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.1.tar.bz2

  2. 使用命令将其上传tar xvfj XXX到文件夹示例: /root/kernel tar xvfj linux-3.3.1.tar.bz2

  3. 编辑文件/root/kernel/linux-3.3.1/arch/x86/syscalls/syscall_64.tbl并添加新行312 64 husky1 sys_husky1

  4. 编辑文件在行声明 /root/kernel/linux-3.3.1/include/linux/syscalls.h前添加新函数#endifasmlinkage long sys_husky1(int fd);

  5. /root/kernel/linux-3.3.1/arch/x86/kernel在(我使用的是 x86 CPU)下添加一个新的 c 文件示例:

    编辑 /root/kernel/linux-3.3.1/arch/x86/kernel/Makefile添加新行 obj-y += husky.o

  6. 转到/root/kernel/linux-3.3.1文件夹并运行命令make –j8

4

1 回答 1

6

在您的 syscall_64.tbl 文件中搜索“sys_hello_rana”。我猜您在系统调用表中将系统调用命名为“sys_hello_rana”,但在定义它时使用了不同的名称(sys_husky1)。

于 2013-09-07T22:22:20.897 回答