как получить файл заголовка ядра?

#linux-kernel #kernel #kernel-module

#linux-ядро #ядро #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/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.)  
  

кроме того, вышеуказанные файлы заголовков — это то, что я хочу.

как я могу получить файл заголовка ядра?

пожалуйста, помогите мне..

Комментарии:

1. Почему вы хотите добавить новый системный вызов?

Ответ №1:

Установка заголовков завершена? Если это так, то они должны быть установлены в /usr/include , и директивы include, которые вы дали, должны просто работать.

Редактировать:

Первый запуск:

sudo apt-get update

Чтобы убедиться, что у вас установлены последние пакеты, затем:

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

Это единственный пакет, который должен содержать все файлы заголовка ядра в Ubuntu.

Комментарии:

1. нет, я думаю, что не весь файл заголовка установлен. потому что я не могу найти эти файлы заголовков в моей ubuntu. вот почему я пытаюсь найти, как их получить.

2. @onteria извините, что значит «Посмотреть встроенный ответ»?

3. @onteria первое было выполнено успешно, а во-вторых, нет linux-headers-2.6.21