отсутствует драйвер устройства config.h - PullRequest
1 голос
/ 12 декабря 2010

Поэтому я начинаю читать книгу http://lwn.net/Kernel/LDD3/, чтобы написать драйвер устройства

Проблема в том, что книга использовала 2.6.10, а я использую 2.6.35.X (в Ubuntu) иconfig.h "отсутствует.Я погуглил проблему и оказалось, что config.h удален.

http://stephane.lesimple.fr/wiki/blog/kernel_2.6.18_linux_config.h_problem предлагает 3 решения, и первые 2 мне не подходят (у меня нет autoconf.h).Третье решение - это то, что у меня над головой.Если кто-то может объяснить третий или есть другие решения, я был бы признателен.

Спасибо

1 Ответ

1 голос
/ 12 декабря 2010

Все параметры -imacros file и -include file обрабатываются после всех параметров -D и -U 1 .

Каждая (из трех) опция - это способ указать GCC на текстовый файл со списком определений препроцессора.Чтобы использовать опцию 3, -imacros a_file , по-прежнему необходим файл a_file (т.е. autoconf.h), файл с макросами или определениями конфигурации.В этой системе это / usr / src / linux / include / generate / autoconf.h

l /usr/src/linux
lrwxrwxrwx 1 root conman 23 Nov 29 19:37 /usr/src/linux -> linux-2.6.35-gentoo-r12

Как видите, этот файл может появиться в 2.6.35.Кажется, что, возможно, конфигурирование ядра делает этот файл;потому что содержимое этого файла выглядит с учетом текущего ядра.Это похоже на файл, объявляющий, какие драйверы скомпилированы (в отличие от скомпилированных как модули).

Итак:

  • Сначала проверьте файл find /usr/src/linux/. -name autoconf.h Если это не такзатем настройте ядро ​​(затем проверьте снова)
  • Измените CFLAGS в Makefile драйвера устройства, включив в него -imacros / usr / src / linux / include / generate / autoconf.h
    CFLAGS+=-imacros /usr/src/linux/include/generated/autoconf.h
  • Комментарий #include <config.h> из источников драйверов.

1"3.11 Опции, контролирующие препроцессор", GCC Reference

...