Автор Тема: Проблемы прикомпиляции модуля  (Прочитано 5169 раз)

0 Пользователей и 1 Гость просматривают эту тему.

kodlan

  • *
  • Сообщений: 3
  • Karma: +0/-0
Проблемы прикомпиляции модуля
« : 04 Ноября 2006, 11:01 »
Здрасти!
Помогите плз. Пытаюс написать самый простой модуль.

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

static int init(void)
{
printk(KERN_ALERT "HELLOn");
return 0;
}

static void exit(void)
{
printk(KERN_ALERT "BYEn");
}

module_init(init);
module_exit(exit);

MODULE_LICENSE("GPL");



Но он почему-то не комплиться. Для компиляции я создал Makefile с строкой: obj-m := mymod.c
а потом
make -C /usr/src/linux/ SUBDIRS=$PWD modules
При этом куча соощений про include чего-то там и в конце сообщение про 2 ошибки, суть которых я так и непонял.
Что я не так делаю?
И еще вопрос как скампилить модуль под арм?
Командой:
make -C /usr/src/linux/ ARCH=arm CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux- SUBDIRS=$PWD modules
что ли ?????

Заранее спасибо..

wRAR

  • *
  • Сообщений: 103
  • Karma: +0/-0
(Нет темы)
« Ответ #1 : 07 Ноября 2006, 10:29 »
Вы б ошибки-то показали.
ALT Linux Team

Eternal flamer

kodlan

  • *
  • Сообщений: 3
  • Karma: +0/-0
(Нет темы)
« Ответ #2 : 10 Ноября 2006, 11:39 »
Цитата: "wRAR"
Вы б ошибки-то показали.

Ошибки я получаю следедующие (это только маленькая часть, их ОЧЕНЬ много):

In file included from include/linux/slab.h:97,
from include/linux/percpu.h:4,
from include/linux/sched.h:34,
from include/linux/module.h:10,
from /root/mymod/mymod.c:2:
include/linux/kmalloc_sizes.h:1:6: warning: "PAGE_SIZE" is not defined
include/linux/kmalloc_sizes.h:5:5: warning: "L1_CACHE_BYTES" is not defined
include/linux/kmalloc_sizes.h:9:5: warning: "L1_CACHE_BYTES" is not defined
In file included from include/linux/percpu.h:4,
from include/linux/sched.h:34,
from include/linux/module.h:10,
from /root/mymod/mymod.c:2:
include/linux/elf.h:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Elf32_Addr’
include/linux/elf.h:17: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Elf32_Half’
include/linux/elf.h:18: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Elf32_Off’
include/linux/elf.h:19: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Elf32_Sword’
include/linux/elf.h:20: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Elf32_Word’
include/linux/elf.h:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Elf64_A

и т.д. и в конце
make[1]: *** [/root/mymod/mymod.o] Error 1
make: *** [_module_/root/mymod] Error 2
make: Leaving directory `/root/kernel'


Что я уже только не делал. Пробывал компилити gcc -c mymod.c, ошибки те же.  Делал функции статачными и не статичными, пользовалься макросом MODULE и фн. init_module & cleanup_module, добавлял __init & __exit. Ниче не помогает. Что я делаю не так? Помогите плз. очень надо.

wRAR

  • *
  • Сообщений: 103
  • Karma: +0/-0
(Нет темы)
« Ответ #3 : 14 Ноября 2006, 11:53 »
Ужасно.
Вы их руками собираете что ли? курите kbuild.
ALT Linux Team

Eternal flamer