#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