LINUX.ORG.RU

А там ничего не говорится о подключении библиотеки? Если да, то линковщику нужно задать опцию -l<library_name>.

Akan
()

Какой еще библиотеки для функций put_user, get_user? Я как бы думал, это "кернельные" функции.

anonymous
()

Вообще-то, если при линковки не подключаешь никакой либы, то по умолчанию линкуется только libc.so.6. Используй команду nm чтобы посмотреть какие функции содержит либа. Например, в либе libc.so.6 нет никаких ни put_user ни get_user. А по поводу "кернельных" функций, как-то даже не совсем понятно, что ты имеешь в виду...

Akan
()

Я насчёт модулей ничего не знаю, но, исходя из здравого смысла, они не могут использовать никаких библиотек вообще. Только функции из ядра или других модулей. Следовательно, стоит поискать функции с таким названием в исходниках ядра, может, что-нибудь станет яснее...

justme
()

Все там работает, надо просто сделать так: Makefile: CC=gcc MODCFLAGS := -Wall -Wwrite-strings -Wredundant-decls -O2 -DMODULE -D__KERNEL__ -DLINUX -I/usr/src/linux/include MODCFLAGS1:= -O1 -D__KERNEL__ -DMODULE -Wall -DLINUX -I/usr/src/linux/include chardev.o: chardev.c $(CC) $(MODCFLAGS1) -c chardev.c echo insmod chardev.o to turn it on echo rmmod chardev to turn if off echo echo X and kernel programming do not mix. echo Do the insmod and rmmod from outside X. INCLUDE: #include <asm/uaccess.h> /* for put_user */ #include <linux/sched.h> #include <linux/tqueue.h> #include <linux/interrupt.h> #include <asm/io.h> #include <linux/errno.h> #include <linux/malloc.h> #include <linux/string.h> #include <linux/pci.h> Вот только они, наверное, не нужны :).

s0mbre
()

Ну посмотри любой модуль в src/linux-е. Что касается ошибок линковки, то есть такие грабли. На этих примерах можешь не обращать на них внимания. Смысл в том, что если в файле нет реализации каких-либо ф-ций компилятор пытается проверить наличие их в других файлах, а поскольку в случае с модулем эти ф-ции - ядерные, то он, естественно, их не находит. Вот и ругается. Загрузка модуля это как бы отложенная линковка (отложенная до момента загрузки модуля). В принципе компилятор не должен производить подобных поисков поскольку это задача линковщика, но 'не все коту масленница' ;).

anonymous
()

Я глупость сморозил про "кернельные функции", это #define-ы в asm/uaccess.h, которые в конечном счете определяются, как ассемблерные команды прямо в тексте. А насчет отложенной линковки - мне пофигу, когда там линкуется, главное, чтобы insmod нормально вставлял Ж).

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