Linux-magazine.it Forum
Maggio 23, 2012, 02:50:34 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?
 
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: [RISOLTO]errore version magic modulo  (Letto 1358 volte)
0 utenti e 2 Utenti non registrati stanno visualizzando questa discussione.
sandro76
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 23


Mostra profilo E-mail
« inserita:: Aprile 01, 2009, 02:29:05 pm »

sto crosscompilando per un PXA270 (kernel 2.6.16) un modulo.
ottenuto il file .ko lo avvio mediante insmod ottenendo il seguente errore:

lcd: version magic '2.6.16-cm-x270 ARMv5 gcc-4.1' should be '2.6.16-cm-x270 ARMv5 gcc-3.3'

insmod: error inserting './lcd.ko': -1 Invalid module format

Ho ricompilato il modulo con una versione piu' vecchia di gcc (3.4, la 3.3 non l'ho), ma l'errore è identico.
inoltre anche dopo la ricompilazione (3.4) se eseguo modinfo ottengo

vermagic:       2.6.16-cm-x270 ARMv5 gcc-4.1
Come mai?  Grazie
« Ultima modifica: Aprile 02, 2009, 08:36:52 pm da michele.p » Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6740



Mostra profilo
« Risposta #1 inserita:: Aprile 01, 2009, 02:45:01 pm »

...il messaggio di errore che ti viene riportato in genere è dovuto al fatto che il modulo compilato non è per il kernel in uso; in sostanza hai compilato un modulo del kernel e lo stai utilizzando con un kernel differente. Prova a vedere cosa ti risponde il comando;

dmesg

quando carichi il modulo.

Bye 8-)
Registrato

sandro76
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 23


Mostra profilo E-mail
« Risposta #2 inserita:: Aprile 01, 2009, 04:16:37 pm »

dmesg ripete lo stesso errore:

lcd: version magic '2.6.16-cm-x270 ARMv5 gcc-4.1' should be '2.6.16-cm-x270 ARMv5 gcc-3.3'

ora sto provando a ricompilare modulo e kernel con un gcc 3.4.
Poi ti informo, grazie
Registrato
sandro76
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 23


Mostra profilo E-mail
« Risposta #3 inserita:: Aprile 01, 2009, 04:40:29 pm »

ho visto che nel file lcd.mod.o viene incluso il file vermagic.h
nel Makefile ho dato il collegamento alla cartella include.
Dovendo crosscompilare gli ho dato i sorgenti di un kernel scaricato da internet, che ho provato a compilare con gcc4.1.
ti posto il file vermagic.h:

#include <linux/version.h>
#include <linux/module.h>

/* Simply sanity version stamp for modules. */
#ifdef CONFIG_SMP
#define MODULE_VERMAGIC_SMP "SMP "
#else
#define MODULE_VERMAGIC_SMP ""
#endif
#ifdef CONFIG_PREEMPT
#define MODULE_VERMAGIC_PREEMPT "preempt "
#else
#define MODULE_VERMAGIC_PREEMPT ""
#endif
#ifndef MODULE_ARCH_VERMAGIC
#define MODULE_ARCH_VERMAGIC ""
#endif

#define VERMAGIC_STRING                   \
   UTS_RELEASE " "                     \
   MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT          \
   MODULE_ARCH_VERMAGIC                   \
   "gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__)

il kernel che ho installato sul PXA è invece l'immagine (gia' compilata) scaricata dal sito del fornitore del modulino PXA270.

A questo punto penso che ho due possibilita':

-ricompilare kernel e  modulo con lo stesso compilatore
-ricompilare kernel e modulo con un compilatore arm-linux-gcc 3.3 ricompilare kernel e modulo, e utilizzare il modulo e il kernel scaricato dal fornitore.

Sono sulla giusta strada?
Grazie
Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6740



Mostra profilo
« Risposta #4 inserita:: Aprile 01, 2009, 05:07:42 pm »

...la soluzione giusta dovrebbe essere implicita nell'errore; l'errore ti dice che la versione che stai utilizzando è un 2.6.16 compilato con Gcc Arm versione 4.1. Molto probabilmente (quasi sicuramente) il kernel che hai scaricato, ovvero;

Citazione
il kernel che ho installato sul PXA è invece l'immagine (gia' compilata) scaricata dal sito del fornitore del modulino PXA270.


è stato compilato con la versione 3.3 del Gcc Arm tant'è che la parte finale dell'errore è;

Citazione
...should be '2.6.16-cm-x270 ARMv5 gcc-3.3

Allora o ti procuri il 3.3 oppure vedi se c'è qualche altra immagine del kernel compilato con un Gcc di una versioen che puoi utilizzare.

Bye  Fico
Registrato

sandro76
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 23


Mostra profilo E-mail
« Risposta #5 inserita:: Aprile 02, 2009, 03:14:11 pm »

risolto.
ho scaricato il gcc 3.3 ricompilato il kernel e modulo e tutto è andato bene.

curiosita': al primo avvio mi ha dato l'errore

lcd: please compile with -fno-common

insmod: error inserting './lcd.ko': -1 Invalid module format

ho quindi ricompilato il modulo con l'opzione richiesta e tutto è andato.
chi sa perchè visto che non ho trovato su google niente al riguardo?
Grazie ancora CIAO
Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6740



Mostra profilo
« Risposta #6 inserita:: Aprile 02, 2009, 08:29:20 pm »

...da;

man gcc

in un terminale;

Citazione
-fno-common
           In C, allocate even uninitialized global variables in the data sec-
           tion of the object file, rather than generating them as common
           blocks.  This has the effect that if the same variable is declared
           (without "extern") in two different compilations, you will get an
           error when you link them.  The only reason this might be useful is
           if you wish to verify that the program will work on other systems
           which always work this way.

Bye  Fico
« Ultima modifica: Aprile 02, 2009, 08:36:20 pm da michele.p » Registrato

Pagine: [1]   Vai su
  Stampa  
 
Vai a: