【问题标题】:undefined reference to system call added to kernel未定义的对系统调用的引用添加到内核
【发布时间】:2013-09-11 16:24:39
【问题描述】:

将系统调用添加到内核后,我尝试编译内核。
跑了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#endif声明前添加新函数 asmlinkage long sys_husky1(int fd);

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

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

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

【问题讨论】:

    标签: linux linux-kernel kernel system-calls


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 2013-04-25
      • 2020-09-29
      • 2012-04-16
      • 2013-09-25
      • 2011-12-18
      相关资源
      最近更新 更多