LINUX.ORG.RU

Вопрос по сборке модуля


0

0

Здравствуйте!

Пробую повторить код, приведенный в статье про создание VFS, и откомпилить его. Делаю файл с сорцем, потом компилю его:

gcc -iwithprefix include -nostdinc -D__KERNEL__ -I/usr/src/linux/include myfs.c

На это оно мне ругается кучей undefined reference'ов (new_inode, d_allod, copy_to_user, kill_litter_super, etc). Вопрос: какую библиотеку нужно прилинковывать, чтобы все собралось нормально?

ЗЫ. Подсмотрел, что в ядре сначала компилятся модули с gcc -c (получаютсяобъектные файлы), а потом они собираются ld -m elf_i386 -к. Но вроде ж так получится файл без ссылок на функции, его выполнить нельзя будет?..

> Пробую повторить код, приведенный в статье про создание VFS

А ты попробуй не только повторить код из статьи, но и собственно прочитать перед этим статью.

anonymous
()

RTFM на предмет kbuild

RTFM в man gcc на предмет compile-only

RTFM на предмет загрузки модулей ядра и /proc/kallsyms

no-dashi ★★★★★
()

>На это оно мне ругается кучей undefined reference'ов >(new_inode, d_allod, copy_to_user, kill_litter_super, etc). >Вопрос: какую библиотеку нужно прилинковывать, чтобы > все собралось нормально

Часть из этого объявлена макросами или inline в соответствующих headers, которые ты забыл подключить (видимо).

Другая часть не экспортируется (это можно победить - выше товарищ написал как, но вопрос надо ли это?). Если совсем лениво ковыряться в kallsyms, то можно написать маленький script, который выковыривает нужные символы из System.map и передает их при компиляции gcc как -Wl,--defsym

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