我正在使用现在不受支持的 Jaunty。但是,我也在运行一个我希望编程的旧的不受支持的内核。
我正在尝试在内核 2.6.21 中进行新系统调用,其中一个新系统调用使用“sys_write”函数,但要使用此函数,我意识到必须根据 2.6.21 版本安装内核头文件。
我试过“apt-get install linux-headers-'uname -r'”、“apt-cache search linux-headers-$(uname -r)”
但我找不到任何东西..
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/syscalls.h>
#include <linux/fcntl.h>
#include <asm/uaccess.h>
Run Code Online (Sandbox Code Playgroud)
另外,上面的头文件是我想要的。
我如何获取现在不受支持且不在当前存储库中的内容的内核头文件?
我写了一个非常简单的内核编程源代码:
#include <linux/kernel.h>
#include <linux/fcntl.h>
#include <linux/init.h>
static int __init(void){
sys_open("ee.c", O_RDONLY);
Run Code Online (Sandbox Code Playgroud)
但是由于内核源代码(现在真正执行了)位于主文件夹中,因此发生了以下错误。即使我做了这样的符号链接。
rm -rf /usr/include/linux
rm -rf /usr/include/asm
ln -s /home/linux-2.6.21/include/linux /usr/include/linux
ln -s /home/linux-2.6.21/include/asm-i386 /usr/include/asm
Run Code Online (Sandbox Code Playgroud)
In file included from /usr/include/asm/fcntl.h:1,
from /usr/include/linux/fcntl.h:4,
from v.c:2:
/usr/include/asm-generic/fcntl.h:120: error: expected specifier-qualifier-list before ‘off_t’
/usr/include/asm-generic/fcntl.h:143: error: expected specifier-qualifier-list before ‘loff_t’
Run Code Online (Sandbox Code Playgroud)
在使用不同文件夹的内核头文件之前我需要做什么/usr/include以及为什么会发生这种类型的错误?
我也做了
rm -rf /usr/include/asm
ln -s /home/linux-2.6.21/include/asm-i386 /usr/include/asm
Run Code Online (Sandbox Code Playgroud)
和#include <linux/syscall.h>
我是stucked ....
这是完整的错误消息。我想内核头文件是格外disinformationed ..
In file included from /usr/include/linux/syscalls.h:61,
from vv.c:4:
/usr/include/linux/list.h:959:2: warning: #warning "don't include kernel headers …Run Code Online (Sandbox Code Playgroud)