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 :

problème exécution programme compilé


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 41
    Par défaut problème exécution programme compilé
    Bonjour, j'ai récement migré de Redhat4EL vers Centos5 (équivalent de Redat5EL) et je me trouve face à un grave problème de compatibilité. Mes programes C compilés sous Centos5 ne sont pas compatibles avec les systèmes RedHat4 (ou dérivés) ; lorsquej'exécute mon programme compilé sour Centos5 tout fonctionne.
    Sous les systèmes plus anciens, j'ai le message suivant : "exeption de point flottant".

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    ton code est mauvais car tu as utilisé des fonctions ou méthodes "platform-specific".

    Un bon code n'est pas forcément un code simple ou un code generant un binaire petit mais un code portable et efficace par définition.

    Un code portable, bien écrit donc est tjrs efficace et en plus il est esthétique et facile à comprendre/debugguer...

    presentes ton code dans les forum C et demande de l'aide sur les fonctions concernés.

    En plus tu commets une très grossière erreur dans ton code :
    il génére une erreur avec un message système, que tu n'interceptes pas pour la commenter et donner plus d'info ne serait ce que sur l'endroit du code ou ça plante (au minimum)...

    Si tu as plusieurs programmes comme ça .... il va te falloir corriger beaucoup de choses, bon courage....


    Une piste à envisager, c'est peut etre tout simplement une float à convertir en double ou autre definition de variable ....

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 41
    Par défaut
    Aucun rapport, voici une source simple de prog.c:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    /* mwmwmwmwmwmwmwmwmwmwm mwmwmwmwmwmwmwmwmwmwmwm mwmwmwmwmwmwmwmwmwmw */
    int main(int argc, char *argv[])
    {
    register i = 0;
     
    while (--argc)
        {
        printf("%d: %s\n", ++i, *(++argv));
        }
    puts("A tchao ...");
    return(0);
    }

    je le compile tout simplement sous Centos 5 :
    Je l'exécute sous Centos 5 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /tmp/prog.e kid
    1: kid
    A tchao ...
    et lorsque je l'exécute sous un red-hat 4, voila le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /tmp/prog.e 
    Exception en point flottant

  4. #4
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Pourrais-tu mettre les balises de code s'il te plait.

    C'est bizarre, t'as écris
    au lieu de
    et ça marche quand même.

    Essaye cette petite modification pour l'instant, car là je ne vois pas
    de solution a ton problème.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 41
    Par défaut
    voila c'est fait

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut,

    pourrais-tu fournir les infos suivantes sur tes deux environnements (CentOS et redhat):

    Procésseurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #cat /proc/cpuinfo
    versions du gcc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #rpm -qa | grep gcc
    Compiler ton code avec les options -ansi et -Wall pour voir s'il n'y a pas plus d'infos.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 41
    Par défaut
    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
    cat /proc/cpuinfo 
    processor	: 0
    vendor_id	: GenuineIntel
    cpu family	: 15
    model		: 4
    model name	: Intel(R) Xeon(TM) CPU 3.20GHz
    stepping	: 10
    cpu MHz		: 3192.246
    cache size	: 2048 KB
    physical id	: 0
    siblings	: 2
    core id		: 0
    cpu cores	: 1
    fdiv_bug	: no
    hlt_bug		: no
    f00f_bug	: no
    coma_bug	: no
    fpu		: yes
    fpu_exception	: yes
    cpuid level	: 5
    wp		: yes
    flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl cid cx16 xtpr lahf_lm
    bogomips	: 6387.44
     
    processor	: 1
    vendor_id	: GenuineIntel
    cpu family	: 15
    model		: 4
    model name	: Intel(R) Xeon(TM) CPU 3.20GHz
    stepping	: 10
    cpu MHz		: 3192.246
    cache size	: 2048 KB
    physical id	: 0
    siblings	: 2
    core id		: 0
    cpu cores	: 1
    fdiv_bug	: no
    hlt_bug		: no
    f00f_bug	: no
    coma_bug	: no
    fpu		: yes
    fpu_exception	: yes
    cpuid level	: 5
    wp		: yes
    flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl cid cx16 xtpr lahf_lm
    bogomips	: 6384.07
    Le problème ne vient pas de la car la machine qui compile n'avait pas le problème avant avec RedHat4.
    Cela est surment du a la version de gcc

    Voici ce que me retourne ta commande sur la machine qui compile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rpm -qa | grep gcc
    libgcc-4.1.2-42.el5
    gcc-4.1.2-42.el5
    Et sur la machine qui ne parvient pas à exécuté le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    rpm -qa | grep gcc
    gcc-g77-3.4.3-9.EL4
    gcc-c++-3.4.3-22.1
    compat-libgcc-296-2.96-132.7.2
    libgcc-3.4.3-9.EL4
    gcc-java-3.4.3-9.EL4
    gcc4-c++-4.0.0-0.14.EL4
    gcc-3.4.3-22.1
    compat-gcc-32-3.2.3-47.3
    gcc-3.4.3-9.EL4
    gcc4-4.0.0-0.14.EL4
    libgcc-3.4.3-22.1
    compat-gcc-32-c++-3.2.3-47.3

  8. #8
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    oui peut etre des éléments trop peu portable
    comme ton while (--argc) autant il est logique autant c'est cradoc

    d'autant plus que tu ne testes jamais rien à aucun moment...
    tu ne testes pas sa propre lecture avant le printf par exemple ni si tes variables sont bien valorisées avant des les afficher.

    ton i est mal construit en prime ajoutes y un type int ou shortint (je sais plus si short int existe en C)...

    pour ce genre de programme c'est sencé n'avoir pas d'incidence mais c'est porcasse....

    J'ai perdu l'habitude de coder mais quand même....

    vu que c'est le binaire qui ne passe pas d'une machine à l'autre c'est pas un probleme de librairies ou d'install quelconque mais de code.

    si en revanche ça arrivait en compilant sur l'autre machine là je veux bien croire à la limite à une possible liaison entre les paquets configurés ou non sur les plateformes.


    hypotèse aussi aurais tu tout simplement transmis ton binaire par ftp en oubliant de le faire en mode bin ?

    c'est con mais je me suis déjà fait avoir avec plus bête que ça encore....

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/12/2008, 08h57
  2. Problème de rapidité d'exécution ou compilation
    Par HASSIOMAR dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 13h13
  3. Problème exécution programme
    Par nana7 dans le forum C
    Réponses: 12
    Dernier message: 19/05/2008, 11h52
  4. [BP7] Vitesse d'exécution des programmes compilés Pascal
    Par Transgarp dans le forum Turbo Pascal
    Réponses: 27
    Dernier message: 08/04/2008, 21h09
  5. exécution d'un programme compilé sur une autre machine
    Par haorua1983 dans le forum Administration système
    Réponses: 4
    Dernier message: 09/02/2007, 17h25

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