在将系统调用添加到内核之后,我尝试编译内核。
它跑了2个小时,最后抛出下面提到的错误[截图]
未定义的引用
任何想法发生了什么。
内核3.9.3
接下来的步骤是 –
从www.kernel.org获取内核代码。 wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.1.tar.bz2
使用命令'tar xvfj XXX'将其上传到文件夹例如:/ root / kernel tar xvfj linux-3.3.1.tar.bz2
编辑文件“/root/kernel/linux-3.3.1/arch/x86/syscalls/syscall_64.tbl”添加新行
312 64 husky1 sys_husky1
Eidt文件“/root/kernel/linux-3.3.1/include/linux/syscalls.h”添加新的函数声明asmlinkage long sys_husky1(int fd);
之前的行“#endif”
在“/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”
goto /root/kernel/linux-3.3.1文件夹并运行命令“make -j8”
在syscall_64.tbl文件中搜索“sys_hello_rana”。 我猜你在syscall表中将你的系统调用命名为“sys_hello_rana”,但是当你定义它的时候你使用了一个不同的名称(sys_husky1)。