我该如何解决这个错误? “linux / linkage.h没有这样的文件或目录”

时间:2016-02-25 01:03:30

标签: ubuntu linux-kernel system-calls

我在做Linux内核编程。当我添加我的系统调用时,我收到错误“linux / linkage.h没有这样的文件或目录”。在source.c文件中,所以我移动到 include / linux并使用vi检查linkage.h。但是,linkage.h代码在那里。 为什么会出现这种情况

#include <linux/kernel.h>
#include <linux/linkage.h>

asmlinkage long sys_helloworld(void){
    printk(KREN_EMERG "HelloWorld!\n");
    return 1;
}

P.S)

root @ kernel-VirtualBox:/usr/src/linux-4.4.1/arch/x86/entry/syscalls#vi syscalls_64.tbl

我添加了

326 64 helloworld sys_helloworld

326是系统调用的最后一个数

root @ kernel-VirtualBox:/usr/src/linux-4.4.1/include/linux# vi syscalls.h

在行尾(#endif上面)

asmlinkage long sys_helloworld(void);

root @ kernel-VirtualBox:/usr/src/linux-4.4.1/kernel# vi Makefile

在obj-y

添加了helloworld.o
obj-y     = fork.o exec_domain.o panic.o \
        cpu.o exit.o softirq.o resource.o \
        sysctl.o sysctl_binary.o capability.o ptrace.o user.o \
        signal.o sys.o kmod.o workqueue.o pid.o task_work.o \
        extable.o params.o \
        kthread.o sys_ni.o nsproxy.o \
        notifier.o ksysfs.o cred.o reboot.o \
        async.o range.o smpboot.o helloworld.o

我在linux-4.4.1 / kernel上创建helloworld.c

#include <linux/linkage.h>
#include <linux/kernel.h>


asmlinkage long sys_helloworld(void){

    printk(KERN_EMERG "Helloworld\n");

    return 1;

}

然后我重新编译内核,然后编译helloworld.c,但是它出现错误linux / linkage.h没有这样的文件或目录

0 个答案:

没有答案