Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 如何获取内核头文件?_Linux Kernel_Kernel_Kernel Module - Fatal编程技术网

Linux kernel 如何获取内核头文件?

Linux kernel 如何获取内核头文件?,linux-kernel,kernel,kernel-module,Linux Kernel,Kernel,Kernel Module,我试图在内核2.6.21中进行新的系统调用 其中一个新的系统调用使用“sys_write”函数 但为了使用这个函数,我意识到我必须按照2.6.21版本安装内核头文件 但是我找不到内核头文件(2.6.21) 我尝试了apt-get-install-linux-headers-'uname-r',apt-cache-search-linux-headers-$(uname-r) 但是我什么也找不到 #include <linux/kernel.h> #include <linux/

我试图在内核2.6.21中进行新的系统调用

其中一个新的系统调用使用“sys_write”函数

但为了使用这个函数,我意识到我必须按照2.6.21版本安装内核头文件

但是我找不到内核头文件(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>

int main(){
    int fd;
    int old_fs;
    old_fs = get_fs();
    set_fs(KERNEL_DS);
    fd = sys_open("config.txt", O_RDONLY, 0);
    if(fd >= 0)
        sys_close(fd);
    set_fs(old_fs);
    return 0;
}



 vv.c:2:24: error: linux/init.h: No such file or directory  
 vv.c:3:26: error: linux/module.h: No such file or directory  
 vv.c:4:28: error: linux/syscalls.h: No such file or directory  
 In file included from /usr/include/asm/fcntl.h:1,  
                 from /usr/include/linux/fcntl.h:4,  
                 from vv.c:5:  
 /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’  
  vv.c:6:25: error: asm/uaccess.h: No such file or directory  
 vv.c: In function ‘main’:  
 vv.c:12: error: ‘KERNEL_DS’ undeclared (first use in this function)  
 vv.c:12: error: (Each undeclared identifier is reported only once  
 vv.c:12: error: for each function it appears in.)  
#包括
#包括
#包括
#包括
#包括
#包括
int main(){
int-fd;
int old_fs;
old_fs=get_fs();
set_fs(内核_DS);
fd=sys_open(“config.txt”,O_RDONLY,0);
如果(fd>=0)
系统关闭(fd);
设置_fs(旧_fs);
返回0;
}
vv.c:2:24:错误:linux/init.h:没有这样的文件或目录
vv.c:3:26:错误:linux/module.h:没有这样的文件或目录
vv.c:4:28:错误:linux/syscalls.h:没有这样的文件或目录
在/usr/include/asm/fcntl.h:1中包含的文件中,
来自/usr/include/linux/fcntl.h:4,
来自vv.c:5:
/usr/include/asm generic/fcntl.h:120:错误:“off\t”之前应为说明符限定符列表
/usr/include/asm generic/fcntl.h:143:错误:“loff\t”之前应为说明符限定符列表
vv.c:6:25:错误:asm/uaccess.h:没有这样的文件或目录
vv.c:在“主”功能中:
vv.c:12:错误:“KERNEL\u DS”未声明(首次在此函数中使用)
vv.c:12:错误:(每个未声明的标识符只报告一次)
vv.c:12:错误:对于出现在中的每个函数。)
此外,上面的头文件是我想要的

如何获取内核头文件


请帮助我。

标题安装完成了吗?如果是这样,那么它们应该安装在
/usr/include
中,您给出的include指令应该可以正常工作

编辑:

首次运行:

sudo-apt-get-update

要确保您拥有最新的软件包,请执行以下操作:

sudo-apt-get-install-linux-headers-$(uname-r)


这是一个包含Ubuntu中所有内核头文件的包。

头文件的安装完成了吗?如果是这样,那么它们应该安装在
/usr/include
中,您给出的include指令应该可以正常工作

编辑:

首次运行:

sudo-apt-get-update

要确保您拥有最新的软件包,请执行以下操作:

sudo-apt-get-install-linux-headers-$(uname-r)


这是一个包,应该包含Ubuntu中所有的内核头文件。

不,我认为没有安装所有的头文件。因为我在ubuntu中找不到这些头文件。这就是为什么我试图找到如何获取它们。@onteria抱歉,“查看内联响应”是什么意思?@onteria首先成功地完成了,其次,没有linux-headers-2.6.21不,我认为没有安装所有的头文件。因为我在ubuntu中找不到这些头文件。这就是我试图找到如何获取它们的原因。@onteria抱歉,“查看内联响应”是什么意思?@onteria首先成功完成,其次,没有linux-headers-2.6.21为什么要添加新的系统调用?为什么要添加新的系统调用?