LINUX.ORG.RU

Ответ на: комментарий от anonymous

>Он пишет Invalid module format

он ждёт .ko а ты ему суёш .о

cvv ★★★★★
()
Ответ на: комментарий от anonymous

К сожалению, я не могу ничего найти в гугле, поэтому, собственно, в форум и обратился. Вся проблема в том, что у меня есть огромный makefile для проекта, сгенерированный rhide. Везде советуют написать makefile типа obj-m+=mumodule.o, но для моего случая он просто не работает - надо слишком много всего прописать. Может быть есть какой-то способ сделать модуль для нового ядра, используя существующий makefile или утилиту какую-нибудь?

anonymous
()
Ответ на: комментарий от anonymous

Просто как 2 рубля
1. Если один файл в модуле

obj-m := myfile.o

default:
make -C /lib/modules/$(shell uname -r)/build SUBDIRS=$(shell pwd) modules

на новых ядрах можно говорить M=$(shell pwd) вместо SUBDIRS, это более правильно.

2. Если файлов много.
obj-m := mymodule.o

mymodule-objs := file1.c file2.c file3.c

default:
аналогично совершенно.

Вместо default: таржета можно использовать всё что угодно.

ms
()
Ответ на: комментарий от ms

invalid module format - значит твой модуль собран не для ядра, которомы делаешь insmod. Как проверить: modinfo имя_модуля.ko далее строка vermagic, сравниваешь с /proc/version - должны совпадать. Если нет, то в /...путь к исходникам ядра.../makefile правишь extraversion Также можно выполнить modprobe -f имя_модуля, тогда vermagic игнорируется.

А как собирать модули - уде описали. И теперь они не *.o а *.ko

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.