我正在尝试在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)
答案 0 :(得分:1)
所有系统调用都必须编译到内核中。您需要在内核构建系统中执行此操作。不能在内核或共享对象之外使用它。
答案 1 :(得分:0)
我假设您正在尝试构建内核模块。您需要在内核构建系统中执行此操作。您无法将其编译为常规应用程序或共享对象。最简单的方法可能是将模块修补到Ubuntu内核树中并使用these instructions构建它。
答案 2 :(得分:0)
我试图在Ubuntu 12.04.1中进行系统调用。
假设您的意思是“尝试创建系统调用:内核模块无法添加系统调用。必须将所有系统调用都编译到内核中。