IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Cross-Compilation de module


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut Cross-Compilation de module
    Salut,

    Voila j'ai écrit un simple module linux que j'ai tester sur ma machine (x86) j'aimerais désormais pouvoir la tester sur une autre architecture, typiquement sur un arm920T.

    J'ai donc utiliser une chaîne de compilation croisée arm-linux-cs2009q3-67 (de chez codesourcery) mais à la compilation j'obtiens deux erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    $make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
    make -C /lib/modules/2.6.32-27-generic/build M=/home/xxx/xxx/arg_mdl modules
    make[1]: Entering directory `/usr/src/linux-headers-2.6.32-27-generic'
      CC [M]  /home/xxx/xxx/arg_mdl/mdlarg.o
    In file included from include/linux/prefetch.h:14,
                     from include/linux/list.h:6,
                     from include/linux/module.h:9,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/processor.h:110: warning: "__LINUX_ARM_ARCH__" is not defined
    In file included from include/linux/irqflags.h:57,
                     from /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:61,
                     from include/linux/list.h:7,
                     from include/linux/module.h:9,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/irqflags.h:11: warning: "__LINUX_ARM_ARCH__" is not defined
    In file included from include/linux/list.h:7,
                     from include/linux/module.h:9,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:111: warning: "__LINUX_ARM_ARCH__" is not defined
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:117: warning: "__LINUX_ARM_ARCH__" is not defined
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:121: warning: "__LINUX_ARM_ARCH__" is not defined
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h: In function '__xchg':
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:247: warning: "__LINUX_ARM_ARCH__" is not defined
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:254: warning: "__LINUX_ARM_ARCH__" is not defined
    In file included from include/linux/list.h:7,
                     from include/linux/module.h:9,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h: At top level:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:322: warning: "__LINUX_ARM_ARCH__" is not defined
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/system.h:325: error: #error "SMP is not supported on this platform"
    In file included from include/linux/module.h:9,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    include/linux/list.h: In function 'list_del':
    include/linux/list.h:106: error: implicit declaration of function '_AC'
    include/linux/list.h:106: error: 'UL' undeclared (first use in this function)
    include/linux/list.h:106: error: (Each undeclared identifier is reported only once
    include/linux/list.h:106: error: for each function it appears in.)
    include/linux/list.h: In function 'hlist_del':
    include/linux/list.h:579: error: 'UL' undeclared (first use in this function)
    In file included from include/linux/bitops.h:17,
                     from include/linux/kernel.h:15,
                     from include/linux/cache.h:4,
                     from include/linux/time.h:7,
                     from include/linux/stat.h:60,
                     from include/linux/module.h:10,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/bitops.h: At top level:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/bitops.h:237: warning: "__LINUX_ARM_ARCH__" is not defined
    In file included from include/linux/kernel.h:15,
                     from include/linux/cache.h:4,
                     from include/linux/time.h:7,
                     from include/linux/stat.h:60,
                     from include/linux/module.h:10,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    include/linux/bitops.h:144: error: conflicting types for '_find_first_bit_le'
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/bitops.h:162: note: previous declaration of '_find_first_bit_le' was here
    include/linux/bitops.h:154: error: conflicting types for '_find_first_zero_bit_le'
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/bitops.h:160: note: previous declaration of '_find_first_zero_bit_le' was here
    include/linux/bitops.h:178: error: conflicting types for '_find_next_bit_le'
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/bitops.h:163: note: previous declaration of '_find_next_bit_le' was here
    include/linux/bitops.h:188: error: conflicting types for '_find_next_zero_bit_le'
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/bitops.h:161: note: previous declaration of '_find_next_zero_bit_le' was here
    In file included from /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/thread_info.h:16,
                     from include/linux/thread_info.h:56,
                     from include/linux/preempt.h:9,
                     from include/linux/spinlock.h:50,
                     from include/linux/seqlock.h:29,
                     from include/linux/time.h:8,
                     from include/linux/stat.h:60,
                     from include/linux/module.h:10,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/fpstate.h:32: warning: "__LINUX_ARM_ARCH__" is not defined
    In file included from include/linux/spinlock.h:88,
                     from include/linux/seqlock.h:29,
                     from include/linux/time.h:8,
                     from include/linux/stat.h:60,
                     from include/linux/module.h:10,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/spinlock.h:4: warning: "__LINUX_ARM_ARCH__" is not defined
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/spinlock.h:5: error: #error SMP not supported on pre-ARMv6 CPUs
    In file included from include/linux/spinlock.h:321,
                     from include/linux/seqlock.h:29,
                     from include/linux/time.h:8,
                     from include/linux/stat.h:60,
                     from include/linux/module.h:10,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/atomic.h:30: warning: "__LINUX_ARM_ARCH__" is not defined
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/atomic.h:153: error: #error SMP not supported on pre-ARMv6 CPUs
    In file included from include/linux/time.h:9,
                     from include/linux/stat.h:60,
                     from include/linux/module.h:10,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    include/linux/math64.h: In function 'div_u64_rem':
    include/linux/math64.h:43: error: '__LINUX_ARM_ARCH__' undeclared (first use in this function)
    In file included from /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/page.h:26,
                     from include/linux/mmzone.h:20,
                     from include/linux/gfp.h:4,
                     from include/linux/kmod.h:22,
                     from include/linux/module.h:13,
                     from /home/xxx/xxxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/glue.h: At top level:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/glue.h:119: error: #error Unknown data abort handler type
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/glue.h:160: error: #error Unknown prefetch abort handler type
    In file included from include/linux/mmzone.h:20,
                     from include/linux/gfp.h:4,
                     from include/linux/kmod.h:22,
                     from include/linux/module.h:13,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/page.h:116: error: #error Unknown user operations model
    In file included from /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/page.h:201,
                     from include/linux/mmzone.h:20,
                     from include/linux/gfp.h:4,
                     from include/linux/kmod.h:22,
                     from include/linux/module.h:13,
                     from /home/xxx/xxx/arg_mdl/mdlarg.c:1:
    /usr/src/linux-headers-2.6.32-27-generic/arch/arm/include/asm/memory.h:18: fatal error: mach/memory.h: No such file or directory
    compilation terminated.
    make[2]: *** [/home/xxx/xxx/arg_mdl/mdlarg.o] Error 1
    make[1]: *** [_module_/home/xxx/xxx/arg_mdl] Error 2
    make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-27-generic'
    make: *** [all] Error 2
    J'ai googueler un peu mais sans trouver de réel solutions ... je m'en remet donc à une âme charitable qui aurais une solutions quel quel soit pour cross compiler mon module pour une cible arm.

    Merci pour toutes vos réponses.
    Bien Cordialement.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Bonjour,

    A priori (méthode naïve) il faut définir '__LINUX_ARM_ARCH__' qui peut se faire en ajoutant une ligne du genre
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    #define __LINUX_ARM_ARCH__ definition
    Encore faudrait il savoir quoi mettre pour definition
    De plus, le fait de rajouter un #define est un peu faux, mais donne la solution rapidement. Normalement, la variable devrait être définie à l'aide d'un ./configure ou autre script automatisé.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    A priori (méthode naïve) il faut définir '__LINUX_ARM_ARCH__' qui peut se faire en ajoutant une ligne du genre
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    #define __LINUX_ARM_ARCH__ definition
    Encore faudrait il savoir quoi mettre pour definition
    De plus, le fait de rajouter un #define est un peu faux, mais donne la solution rapidement. Normalement, la variable devrait être définie à l'aide d'un ./configure ou autre script automatisé.
    Salut,

    J'ai tester ta solution mais malheureusement sans effet il semblerait que des fichier d'entête manquent à l'appel dans le répertoire asm ???

    J'ai lue quelques messages ou il s'agissait de recompiler le noyau pour les implémenter(headers), sans vraiment bien comprendre pourquoi?

    Cordialement.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    Re,

    J'ai donc compris mon erreur, je compilais mes modules avec des sources incompatibles ( pour une cible ARM).
    J'ai donc recompiler un noyau pour ma cible, c'est aussi simple que sa !

    Voila en espérant pouvoir aider un autre débutant maladroit comme moi !

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cross compiler un module python (py-spidev)
    Par damgot dans le forum Général Python
    Réponses: 3
    Dernier message: 09/02/2015, 09h41
  2. Cross-compil pour MAC
    Par Ulmo dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 29/09/2006, 20h49
  3. [Apache] compiler le module pour Ruby mod_ruby.so ?
    Par Mescalito dans le forum Apache
    Réponses: 1
    Dernier message: 02/11/2005, 19h28
  4. Compiler un module sans recompiler tout le noyau
    Par khayyam90 dans le forum Administration système
    Réponses: 7
    Dernier message: 22/09/2005, 04h16
  5. cross compilation
    Par jowy dans le forum C++Builder
    Réponses: 11
    Dernier message: 26/08/2005, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo