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 :

[Débutant] Erreur à la compilation indéterminer


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut [Débutant] Erreur à la compilation indéterminer
    Bonjour,

    j'ai compiler ce code avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -o exotp2 exotp2.c
    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
     
    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<sched.h>
    #include<sys/wait.h>
    #include<errno.h>
     
    main()
    {
    int ret,pid;
    int politique,status,priorite;
    struct timespec quantum;
    struct sched_param param;
     
    ret=fork();
    if(ret==0)
      { /* Processus fils */
            pid=getpid();
            printf("je suis le fils ma priorité d'ordonnancement est : %d \n",getpriority(PRIO_PROCESS,pid));
     
    politique=sched_getscheduler(pid);
     
          if(politique==SCHED_RR)
             printf("je suis le fils ma prorité d'ordonnancement est SCHED_RR \n");
          if(politique==SCHED_FIFO)
             printf("je suis le fils, ma prorité d'ordonnancement est SCHED_FIFO \n");
          if(politique==SCHED_OTHER)
             printf("je suis le fils, ma prorité d'ordonnancement est SCHED_OTHER \n");
     
    param.sched_priority =10;
    setpriority(PRIO_PROCESS, pid, 10);
     
    if(sched_setscheduler(pid, SCHED_FIFO, &param) == -1)
      perror("problème scheduler");
    priorite = getpriority(PRIO_PROCESS, pid);
    printf("je suis le fils, ma priorité d'ordonnancement est: %d\n", priorite);
     
    politique = sched_getscheduleur(pid);
    if(politique == SCHED_RR)
    printf("je suis le fils, ma politique d'ordonnancement est: SCHED_RR \n");
    if(politique == SCHED_FIFO)
    printf("je suis le fils, ma politique d'ordonnancement est: SCHED_FIFO \n");
    if(politique == SCHED_OTHER)
    printf("je suis le fils, ma politique d'ordonnancement est: SCHED_OTHER \n"); 
    }
     
    else    /* Processus pére */
    {
    printf("Voici les priorités min et max de la politique SCHED_FIFO, %d, %d\n",
           sched_get_priority_min(SCHED_FIFO), sched_get_priority_max(SCHED_FIFO));
     
    printf("Voici les priorités min et max de la politique SCHED_RR, %d, %d\n",
           sched_get_priority_min(SCHED_RR), sched_get_priority_max(SCHED_RR));
     
    sched_rr_get_interval(getpid(), &quantum);
     
    printf("Voici les valeurs du quantum de la politique SCHED_RR, %d secondes, %d nanosecondes \n", 
           quantum.tv_sec, quantum.tv_nsec);
     
     wait(&status);
     }
     
    }
    voila le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /tmp/ccqzDykS.o: In function `main':
    exotp2.c:(.text+0x110): undefined reference to `sched_getscheduleur'
    collect2: ld a retourné 1 code d'état d'exécution
    y a t-il quellqu'un qui peux m'aider à comprendre l'erreur.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o exotp2 exotp2.c -lrt

  3. #3
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut
    Bonjour

    j'ai compiler avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gcc -o exotp2 exotp2.c -lrt
    le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    exotp2.c: In function ‘main’:
    exotp2.c:59: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘__time_t’
    exotp2.c:59: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’
    /tmp/ccGCpxFh.o: In function `main':
    exotp2.c:(.text+0x110): undefined reference to `sched_getscheduleur'
    collect2: ld returned 1 exit status
    sa n'a rien changer même si je ne c'est pas ce que sa veux dir ?

    j'ai aussi tester avec: (en ajoutant le nom du réprtoire ou autre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gcc -o exotp2 exotp2.c -lrt TP
    resulta:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gcc: TP: Aucun fichier ou dossier de ce type
    exotp2.c: In function ‘main’:
    exotp2.c:59: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘__time_t’
    exotp2.c:59: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’
    et en commpilant un autre sa marche trés bien:
    code: fork.c
    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
     
    #include <stdio.h>
    #include <unistd.h>
     
    int main(void){
     
    int pid;
    if((pid = fork() ) ==0){
    /* Processus fils */
     
    printf("le Fils : mon pid est %d, le pid de Mon papa est %d\n", getpid(), getppid());
    //printf("\t\t fork a retourné au pére la valeur %d\n", pid);
     
    }
    else if(pid > 0){
    /* Processus pére */
    printf("le pére : mon pid est %d, le pid de Mon papa est %d\n", getpid(), getppid());
    printf("\t\t fork a retourné au pére la valeur %d\n", pid);
    sleep(2);
     
    }
    else perror("ERREUR dans fork !!! ");
    return 0;
     
    }
    exécuter avec: le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    le Fils : mon pid est 6444, le pid de Mon papa est 6443
    le pére : mon pid est 6443, le pid de Mon papa est 5936
                     fork a retourné au pére la valeur 6444
    Alors franchement je ne comprant pas.

    si quellequ'un peux m'aider.

    Merci.

  4. #4
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Comme il est dit à la ligne 59, %d requiert un int et tu lui passes un _time en parametre et idem pour la seconde erreur. Pour cette dernière, mets un %ld à la place du %d. Pour le premier, castes en int.

    P.S : je te réponds sans vérifier !!

  5. #5
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut
    Merci,

    en remplacent la ligne 59: par sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("Voici les valeurs du quantum de la politique SCHED_RR, %ld
    secondes, %ld nanosecondes \n", quantum.tv_sec, quantum.tv_nsec);
    mais voila le résultat: en re compilant avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gcc -o exotp2 exotp2.c -lrt TP
    sa donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc: TP: Aucun fichier ou dossier de ce type
    Et avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -o exotp2 exotp2.c -lrt
    le résultat est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /tmp/ccYanbwC.o: In function `main':
    exotp2.c:(.text+0x110): undefined reference to `sched_getscheduleur'
    collect2: ld returned 1 exit status
    Alors la ce dérnier résultat, je ne c'est même pas ce que sa veux dir ?
    Si quellequ'un peux m'aider.

    Merci d'avance.

    le code du premier poste ce lui que je test qui a donnée c'est résultat:
    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
     
    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<sched.h>
    #include<sys/wait.h>
    #include<errno.h>
     
    main()
    {
    int ret,pid;
    int politique,status,priorite;
    struct timespec quantum;
    struct sched_param param;
     
    ret=fork();
    if(ret==0)
      { /* Processus fils */
            pid=getpid();
            printf("je suis le fils ma priorité d'ordonnancement est : %d \n",getpriority(PRIO_PROCESS,pid));
     
    politique=sched_getscheduler(pid);
     
          if(politique==SCHED_RR)
             printf("je suis le fils ma prorité d'ordonnancement est SCHED_RR \n");
          if(politique==SCHED_FIFO)
             printf("je suis le fils, ma prorité d'ordonnancement est SCHED_FIFO \n");
          if(politique==SCHED_OTHER)
             printf("je suis le fils, ma prorité d'ordonnancement est SCHED_OTHER \n");
     
    param.sched_priority =10;
    setpriority(PRIO_PROCESS, pid, 10);
     
    if(sched_setscheduler(pid, SCHED_FIFO, &param) == -1)
      perror("problème scheduler");
    priorite = getpriority(PRIO_PROCESS, pid);
    printf("je suis le fils, ma priorité d'ordonnancement est: %d\n", priorite);
     
    politique = sched_getscheduleur(pid);
    if(politique == SCHED_RR)
    printf("je suis le fils, ma politique d'ordonnancement est: SCHED_RR \n");
    if(politique == SCHED_FIFO)
    printf("je suis le fils, ma politique d'ordonnancement est: SCHED_FIFO \n");
    if(politique == SCHED_OTHER)
    printf("je suis le fils, ma politique d'ordonnancement est: SCHED_OTHER \n"); 
    }
     
    else    /* Processus pére */
    {
    printf("Voici les priorités min et max de la politique SCHED_FIFO, %d, %d\n",
           sched_get_priority_min(SCHED_FIFO), sched_get_priority_max(SCHED_FIFO));
     
    printf("Voici les priorités min et max de la politique SCHED_RR, %d, %d\n",
           sched_get_priority_min(SCHED_RR), sched_get_priority_max(SCHED_RR));
     
    sched_rr_get_interval(getpid(), &quantum);
     
    printf("Voici les valeurs du quantum de la politique SCHED_RR, %ld secondes, %ld nanosecondes \n", quantum.tv_sec, quantum.tv_nsec);
     
     wait(&status);
     }
     
    }

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Précise ton système s'il te plaît: kernel, libc, etc.

  7. #7
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par bilred Voir le message
    [CODE]
    politique = sched_getscheduleur(pid);
    Normal, cette fonction n'est pas définie !!!

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

Discussions similaires

  1. [VBA-E]{Débutant} Erreurs de compilation
    Par kenny49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/04/2007, 09h15
  2. Réponses: 15
    Dernier message: 01/11/2005, 14h32
  3. [MASM32][Débutant] Erreur de compilation
    Par Priest dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 02/10/2005, 03h06
  4. Réponses: 12
    Dernier message: 26/08/2005, 11h02
  5. [Débutant]Erreur de compilation inconprehensible
    Par @r$£~%[ dans le forum C++
    Réponses: 15
    Dernier message: 14/08/2005, 21h04

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