我是linux新手。我正在尝试向linux内核4.4.1添加系统调用。但是当我运行时,它会给我以下错误:
init/built-in.o: In function `populate_rootfs':
/home/xxx/kernel/linux-4.4.1/init/initramfs.c:610: undefined reference to `__initramfs_size'
/home/xxx/kernel/linux-4.4.1/init/initramfs.c:624: undefined reference to `__initramfs_size'
Makefile:927: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
所做的更改是:
在sys_hello
中定义了一个新系统调用hello.c
,并为系统调用添加了Makefile,并将其放在名为hello
的文件夹中。
将内核Makefile更改为告诉编译器我们的新系统调用(sys_hello()
)的源文件存在于hello
目录中。
core-y + = usr / hello /
将新系统调用(sys_hello()
)添加到系统调用表(syscall_64.tbl
文件)
326 common hello sys_hello
在系统调用头文件(sys_hello()
)中添加了新的系统调用(syscalls.h
)。
asmlinkage long sys_hello(int *num);
Ran make:
make menuconfig
make
知道如何修复错误并编译内核吗?