Linux, создание модулей

Elfius
Сообщений: 9
Зарегистрирован: 07 апр 2008, 21:00

Linux, создание модулей

Сообщение Elfius » 28 апр 2008, 22:18

Здравствуйте!
Требуется помощь в конфигурировании ядра Linux.
У меня стоит ядро Linux Kernel 2.4.20-8. Учусь создавать модули для ядра.
Я попробовала скомпилить следующий простой пример:

Код: Выбрать все

/*
 * hello-1.c - Простейший модуль ядра.
 */
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
 printk("<1>Hello world 1.\n");

 return 0;
}

void cleanup_module(void)
{
 printk(KERN_alert "Goodbye world 1.\n");
}

Ho возникло собщение: 'The present kernel configuration has modules disabled. Type 'make config' and enable loadable module support'.
Затем я переконфигурировала ядро уже c поддержкой модулей. И когда я задаю команду make (как сказано в этом примере создания модулей ядра) появляется следующее:
make -C /lib/modules/2.4.20-8/build M=/root/hello_proc modules
make[1]: Вход в каталог `/usr/src/linux-2.4.20-8'
make -r -f tmp_include_depends all
make[2]: Вход в каталог `/usr/src/linux-2.4.20-8'
make[2]: циклическая зависисмость пропущена, цель 'modules' не трубует выполнения и так далее и так далее. B результате никакой файл в директории /proc не создается!
Объясните пожалуйста в чем дело.
Последний раз редактировалось Elfius 30 ноя 2019, 12:56, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Linux, создание модулей

Сообщение qwertylol » 28 апр 2008, 23:16

ого :blink: . Я в никсах никогда не работал, отладка просто бесит . Зато я вижу, что дрова там более лаконичные, в окошках всё чуть сложнее.
Исходя из опыта работы c UWIN'ом, я сделал вывод, что там довольно существенную роль играет makefile, a вы его не выложили. И ещё, что это за переменная M?
P.S. Если вы пытаетесь учить не по книге, a по статьям, то у вас врядли что-то получится(сужу по себе).
Последний раз редактировалось qwertylol 30 ноя 2019, 12:56, всего редактировалось 1 раз.
Причина: test

Elfius
Сообщений: 9
Зарегистрирован: 07 апр 2008, 21:00

Linux, создание модулей

Сообщение Elfius » 29 апр 2008, 05:12

qwertylol писал(а):Source of the post
Исходя из опыта работы c UWIN'ом, я сделал вывод, что там довольно существенную роль играет makefile, a вы его не выложили. И ещё, что это за переменная M?

Makefile содержит 1 строку: obj-m += hello-1.o
Последний раз редактировалось Elfius 30 ноя 2019, 12:56, всего редактировалось 1 раз.
Причина: test

Elfius
Сообщений: 9
Зарегистрирован: 07 апр 2008, 21:00

Linux, создание модулей

Сообщение Elfius » 29 апр 2008, 06:13

Ща поточнее опишу. B каталоге /root/ у меня, значит, находится файл hello.c (текст программы выше) и Makefile, в кот. написано obj-m += hello.o
B терминале я ввожу: make -C /usr/src/linux-`uname -r` SUBDIRS=$PWD modules
Далее, по учебнику, должно появится нечто похожее на:

Код: Выбрать все

[root@pcsenonsrv test_module]# make -C /usr/src/linux-`uname -r` SUBDIRS=$PWD modules
make: Entering directory `/usr/src/linux-2.6.x
 CC [M] /root/hello.o
 Building modules, stage 2.
 MODPOST
 CC /root/hello.mod.o
 LD [M] /root/hello.ko
make: Leaving directory `/usr/src/linux-2.6.x

A у меня вот что: (см прикрепленные файлы)

Изображение
Последний раз редактировалось Elfius 30 ноя 2019, 12:56, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 0 гостей