как получить файл заголовка ядра? - PullRequest
1 голос
/ 14 мая 2011

Я пытаюсь сделать новые системные вызовы в ядре 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 голос
/ 14 мая 2011

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

Edit:

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

sudo apt-get update

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

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

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

...