1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mars 2017
    Messages : 5
    Points : 5
    Points
    5

    Par défaut Compilation Xenomai 3.x : error: pasting X and Y does not give a valid preprocessing token

    Bonjour,

    Je souhaite installer Xenomai 3.x sur une cible. J'ai pris la dernière version stable de Xenomai (3.0.3) et un noyau Linux correspondant aux patchs disponibles pour cette version de Xenomai (c'est à dire 4.4.43).

    La compilation doit être effectuée avec Buildroot, la chaîne de compilation croisée construite par Buildroot est basée sur gcc 6.3.0. Cependant lorsque vient l'étape de compilation de Xenomai j'ai les messages d'erreur suivants :

    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
    In file included from /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/time.h:26:0,
                     from /buildroot-2017.02/output/host/usr/powerpc-buildroot-linux-uclibc/sysroot/usr/include/sys/types.h:132,
                     from bootstrap.c:18:
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:1: error: pasting "__cobalt_" and "(" does not give a valid preprocessing token
     COBALT_DECL(int, fputc(int c, FILE *stream));
     ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, fputc(int c, FILE *stream));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, fputc(int c, FILE *stream));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:1: error: pasting "__real_" and "(" does not give a valid preprocessing token
     COBALT_DECL(int, fputc(int c, FILE *stream));
     ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, fputc(int c, FILE *stream));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, fputc(int c, FILE *stream));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:1: error: pasting "__wrap_" and "(" does not give a valid preprocessing token
     COBALT_DECL(int, fputc(int c, FILE *stream));
     ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, fputc(int c, FILE *stream));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:68:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, fputc(int c, FILE *stream));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:1: error: pasting "__cobalt_" and "(" does not give a valid preprocessing token
     COBALT_DECL(int, putchar(int c));
     ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, putchar(int c));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, putchar(int c));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:1: error: pasting "__real_" and "(" does not give a valid preprocessing token
     COBALT_DECL(int, putchar(int c));
     ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, putchar(int c));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, putchar(int c));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:1: error: pasting "__wrap_" and "(" does not give a valid preprocessing token
     COBALT_DECL(int, putchar(int c));
     ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, putchar(int c));
                      ^
    /buildroot-2017.02/output/build/xenomai-3.0.3/include/cobalt/stdio.h:70:18: error: expected declaration specifiers or '...' before '(' token
     COBALT_DECL(int, putchar(int c));
    J'ai essayé de compiler en dehors de Buildroot ainsi qu'avec d'autres versions de gcc mais j'ai toujours cette même erreur. Il me semble qu'il doit y avoir un souci avec mes options de compilation mais même si c'est le cas j'ai cherché et je ne vois pas vraiment ce que je devrais rajouter ou enlever comme options.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mars 2017
    Messages : 5
    Points : 5
    Points
    5

    Par défaut

    Il s'agit en fait d'un problème avec uClibc qui définit fputc() et putchar() en tant que macros sans définir l'indicateur __STDIO_PUTC_MACRO. Pour résoudre cela il faut se rendre dans la configuration de uClibc (avec la commande make menuconfig par exemple), puis dans le menu "String and stdio support" cocher le champ "Provide a macro version of putc()".

    Au cas où dans ce même menu il faudra probablement cocher "Support an fopen() 'F' flag for large file mode", car j'ai ensuite eu une autre erreur à la compilation ("off64_t not defined") mais je ne sais plus exactement si cela est directement lié au problème précédent.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/05/2014, 15h29
  2. Réponses: 1
    Dernier message: 19/03/2012, 14h31
  3. Réponses: 0
    Dernier message: 05/02/2009, 12h14
  4. Réponses: 2
    Dernier message: 24/04/2008, 15h31
  5. ERROR 1314 (0A000): LOAD DATA is not allowed in stored proce
    Par pointe dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 17/11/2005, 12h50

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