Compilazione modulo

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
zosty
Linux 0.x
Linux 0.x
Messaggi: 11
Iscritto il: gio 8 nov 2007, 12:03
Slackware: 64 - current

Compilazione modulo

Messaggio da zosty »

Sto cercando di imparare a compilare dei moduli per la creazione di driver.
Per iniziare ho provato a compilare questo semplice file tratto da un libro di programmazione di device drivers:

Codice: Seleziona tutto

#include <linux/module.h>

#if defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
#include <linux/modversions.h>
#endif

#include <linux/kernel.h>


int init_module(void)
{
  	printk(KERN_DEBUG "Init module success\n");
	return 0;
}

void cleanup_module(void)
{
  printk(KERN_DEBUG "Exit\n");
}

ma, compilandolo con il comando

Codice: Seleziona tutto

 gcc -D__KERNEL__ -DMODULE -DMODVERSION -Wall -O2 -o module.o -c module.c 
ottengo il seguente messaggio di errore:
  • In file included from /usr/include/linux/prefetch.h:14,
    from /usr/include/linux/list.h:8,
    from /usr/include/linux/module.h:9,
    from module.c:1:
    /usr/include/asm/processor.h:83: error: 'CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)
    /usr/include/asm/processor.h:83: error: requested alignment is not a constant
    In file included from /usr/include/linux/module.h:20,
    from module.c:1:
    /usr/include/asm/module.h:64:2: error: #error unknown processor family
Qualcuno sa dirmi da cosa e' dovuto?
Grazie
Z

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio da tgmx »

Non so se va bene compilare il modulo in quel modo.
In una guida che sto leggendo (sto anche io approfondendo la creazione di moduli :) ) dicono di compilare con un makefile apposito.

Codice: Seleziona tutto

obj-m +=modulo.o

all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
Basta mettere il .c e il Makefile in una stessa directory e dare make. 8)

zosty
Linux 0.x
Linux 0.x
Messaggi: 11
Iscritto il: gio 8 nov 2007, 12:03
Slackware: 64 - current

Messaggio da zosty »

tgmx ha scritto:Non so se va bene compilare il modulo in quel modo.
In una guida che sto leggendo (sto anche io approfondendo la creazione di moduli :) ) dicono di compilare con un makefile apposito.

Codice: Seleziona tutto

obj-m +=modulo.o

all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
Basta mettere il .c e il Makefile in una stessa directory e dare make. 8)

Grazie!!! E' cambiato con la versione di kernel 2.6....

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio da tgmx »

de nada ;)

Metti [RISOLTO] sul titolo e buon lavoro :) .

Rispondi