[Sysadmins] anyfs-tools
unDEFER
=?iso-8859-1?q?undefer_=CE=C1_gmail=2Ecom?=
Ср Мар 8 10:34:39 MSK 2006
В письме от Wed, 08 Mar 2006 02:31:03 +0300, Vitaly Lipatov
<lav на altlinux.ru> сообщал:
> Пытаюсь использовать glibc-kernheaders:
> In file included from /usr/include/linux/config.h:4,
> from /usr/include/asm/bitops.h:8,
> from build_e2fs.c:51:
> /usr/include/linux/autoconf.h:1:2: #error Invalid kernel header
> included in userspace
>
> Существует ли у нас возможность включать bitops?
Я не знаю какая у Вас версия glibc-kernheaders, но видимо более свежая.
Раз они так решили, значит получается что нету возможности.
Хотя есть -- надо только из config.h убрать "#include <linux/autoconf.h>"
Ведь, у меня glibc-kernheaders-2.4-9.1.87 и там:
$ cat /usr/include/linux/config.h
#ifndef _LINUX_CONFIG_H
#define _LINUX_CONFIG_H
#ifdef __KERNEL__
#error Incorrectly using glibc headers for a kernel module
#endif
#endif
Поэтому у меня и с glibc-kernheaders всё работало.
Но, вот именно по этой причине я использую теперь не glibc-kernheaders, а
заголовки ядра из реальных сырцов.
> 1. Через
> http://sourceforge.net/project/showfiles.php?group_id=160550&package_id=180617&release_id=396023
> такой архив не видно
:-) "You have selected to download the 0.83 Gamma 2 release."
Какой ещё релиз вы там ожидали увидеть???
Вот здесь надо смотреть:
http://sourceforge.net/project/showfiles.php?group_id=160550
> 2. Каталог внутри архива должен называться %name-%version
Учтём.
> 4. Не надо искать заголовочные файлы ядра таким способом:
> /lib/modules/$(shell uname -r)/build/include
> а уж тем более включать их в userspace-программу.
Да, нет это как раз правильный способ :-)
Вернее так: "/lib/modules/$(shell uname -r)/build" -- однозначно верный
способ найти исходники ядра, т.к. он используется при сборках модулей ядра.
А, то что вы привели выше -- такой же верный способ поиска заголовков
именно того ядра которое стоит.
Это на самом деле вернее, использования glibc-kernheaders, хотя бы потому,
что они точно от той версии ядра которая установлена, а не какой-то старой.
glibc-kernheaders -- вообще костыль лишь для случая когда нет исходников
ядра.
А насчёт использования в userspace-программе -- так не надо забывать, что
это очень необычная userspace-программа -- рядом с ней лежит папочка
anyfs, в которой лежит модуль ядра, для компиляции которого всё равно
понадобяться исходники ядра. А без этого модуля смысл использования этой
userspace-программы в основном теряется.
И почитайте здесь (это первый ответ гугля на запрос "#error Invalid kernel
header included in userspace"):
http://www.redhat.com/archives/linux-lvm/2002-July/msg00143.html
Здесь советуют с некоторых пор делать именно так, т.е. не использовать
glibc-kernheaders.
--
registered Linux user #360474
Don't worry, I can read OpenOffice.org
Подробная информация о списке рассылки Sysadmins