我正在尝试在Ubuntu 12.04.1中进行系统调用。我在编译我的hello.c文件时遇到错误

时间:2017-10-21 14:16:37

标签: c linux makefile

我正在尝试在Ubuntu 12.04.1中进行系统调用。编译我的hello.c文件时收到错误:

#include <linux/kernel.h>
asmlinkage long sys_hello(void) {
    printk("hello world\n");
    return 0;
}

显示错误:

  

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘long’ asmlinkage long sys_hello(void)

3 个答案:

答案 0 :(得分:1)

所有系统调用都必须编译到内核中。您需要在内核构建系统中执行此操作。不能在内核或共享对象之外使用它。

答案 1 :(得分:0)

我假设您正在尝试构建内核模块。您需要在内核构建系统中执行此操作。您无法将其编译为常规应用程序或共享对象。最简单的方法可能是将模块修补到Ubuntu内核树中并使用these instructions构建它。

答案 2 :(得分:0)

  

我试图在Ubuntu 12.04.1中进行系统调用。

假设您的意思是“尝试创建系统调用:内核模块无法添加系统调用。必须将所有系统调用都编译到内核中。