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 :

Erreur d'execution d'un programme


Sujet :

Linux

  1. #1
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut Erreur d'execution d'un programme
    Bonsoir tout le monde,

    J'essaye d'executer un programmes qui permet de trouver des programmes dans le PATH.
    Seulement, après compilation et execution il me renvoie ceci sur la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ss_trouve_prog_ds_path: file not recognized: File format not recognized
    collect2: ld a retourné 1 code d'état d'exécution
    voici mon fichier ss_trouve_prog_ds_path :
    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
     
    !/bin/sh
    # inpath - Vérifie qu'un programme donné existe en tant que tel,
    #        ou se trouve dans la liste de répertoires du PATH.
    in_path()
    {
      # Etant donnée une commande et le PATH, cherche la commande. Renvoie
      # 0 si elle est trouvée et éxecutable, 1 dans le cas contraire.
      # Attention! Ceci modifie temporairement l'IFS (le séparateur de champs
      # en entrée) mais le remet en place à la fin.
     
    cmd=$1  path=$2 retval=1
    oldIFS=$IFS   IFS=":"
     
    for directory in $path
    do
      if [ -x $directory/$cmd ] ; then
        retval=0 # si nous sommes là, nous avons trouvé $cmd dans directory
      fi
    done
    IFS=$oldIFS
    return $retval
    }
    checkForCmdInPath(){
      var=$1
     
     
      # Expliquons la notion du découpage de variable dans la
      # conditionnelle suivante: ${var#expr} renvoie tout ce qui suit
      # la portion de chaîne correspondant au motif 'expr' dans la
      # valeur de la variable (si le motif est reconnu), et
      # ${var%expr} renvoie tout ce qui ne correspond pas (dans le cas
      # présent, il s'agit du seul premier caractère). On peut encore
      # procéder en Bash en écrivant ${var:0:1} et faire appel à
      # cut: cut -c1
     
    if [ "$var" != "" ]
    then
      if [ "${var%${var#?}}" = "/" ] then
        if [ ! -x $var ]
        then
          return 1
        fi
        ! in_path $var $PATH ; then
        return 2
      fi
    fi
    }
     
    if [ $# -ne 1 ] ; then
            echo "Synthaxe: $0 commande" >&2 ; exit 1
    fi
     
    checkForCmdInPath "$1"
     
    case $? in
     0 ) echo "$1 trouvé dans le PATH"      ;;
     1 ) echo "$1 pas trouvé ou pas exécutable"     ;;
     2 ) echo "$1 pas trouvé dans le PATH"  ;;
    esac
     
    exit O
    quelqu'un sait-t-il ce que sa veut dire ??

    merci

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    Bonsoir tout le monde,

    J'essaye d'executer un programmes qui permet de trouver des programmes dans le PATH.
    Seulement, après compilation et execution il me renvoie ceci sur la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ss_trouve_prog_ds_path: file not recognized: File format not recognized
    collect2: ld a retourné 1 code d'état d'exécution
    voici mon fichier ss_trouve_prog_ds_path :
    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
     
    !/bin/sh
    # inpath - Vérifie qu'un programme donné existe en tant que tel,
    #        ou se trouve dans la liste de répertoires du PATH.
    in_path()
    {
      # Etant donnée une commande et le PATH, cherche la commande. Renvoie
      # 0 si elle est trouvée et éxecutable, 1 dans le cas contraire.
      # Attention! Ceci modifie temporairement l'IFS (le séparateur de champs
      # en entrée) mais le remet en place à la fin.
     
    cmd=$1  path=$2 retval=1
    oldIFS=$IFS   IFS=":"
     
    for directory in $path
    do
      if [ -x $directory/$cmd ] ; then
        retval=0 # si nous sommes là, nous avons trouvé $cmd dans directory
      fi
    done
    IFS=$oldIFS
    return $retval
    }
    checkForCmdInPath(){
      var=$1
     
     
      # Expliquons la notion du découpage de variable dans la
      # conditionnelle suivante: ${var#expr} renvoie tout ce qui suit
      # la portion de chaîne correspondant au motif 'expr' dans la
      # valeur de la variable (si le motif est reconnu), et
      # ${var%expr} renvoie tout ce qui ne correspond pas (dans le cas
      # présent, il s'agit du seul premier caractère). On peut encore
      # procéder en Bash en écrivant ${var:0:1} et faire appel à
      # cut: cut -c1
     
    if [ "$var" != "" ]
    then
      if [ "${var%${var#?}}" = "/" ] then
        if [ ! -x $var ]
        then
          return 1
        fi
        ! in_path $var $PATH ; then
        return 2
      fi
    fi
    }
     
    if [ $# -ne 1 ] ; then
            echo "Synthaxe: $0 commande" >&2 ; exit 1
    fi
     
    checkForCmdInPath "$1"
     
    case $? in
     0 ) echo "$1 trouvé dans le PATH"      ;;
     1 ) echo "$1 pas trouvé ou pas exécutable"     ;;
     2 ) echo "$1 pas trouvé dans le PATH"  ;;
    esac
     
    exit O
    quelqu'un sait-t-il ce que sa veut dire ??

    merci
    Première ligne => remplace "!/bin/sh" par "#!/bin/sh"

    Et éventuellement, tu peux remplacer
    par
    Ca fait pareil mais c'est mieux écrit...

  3. #3
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    oui en faite je l'ai juste oublier( le #) dans ma copie du code sur ce post
    sinon j'ai toujours cette erreur

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut

    ça ressemble à la lettre O et non à un zéro.

    à quoi correspond collect2?
    Dernière modification par Invité ; 21/09/2008 à 03h16.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Seulement, après compilation et execution
    Après compilation?
    Les scripts ne se compilent pas; ils sont interprétés et exécutés directement par le shell.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Points : 426
    Points
    426
    Par défaut
    Tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ! in_path $var $PATH ; then
    Tu ne voulais pas avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ! in_path $var $PATH ; then
    ?

  7. #7
    Membre confirmé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Points : 646
    Points
    646
    Par défaut
    Bonjour,

    Fais un "file 'ton fichier'" pour vérifier le type de fichier, tu dois avoir qqchose du genre POSIX shell script text executable
    En réalité je pense que tu essaies de compiler ton fichier avec gcc qui te retourne cette erreur, mais comme on te l'a rappelé plus haut les scripts shell ne se compilent pas, tu les exécutes directement avec le shell.

    P S: si le sujet est résulu, n'oublie pas de mettre le tag résolu dans le titre, merci.

  8. #8
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    oui, c'est ca mais comment execute-t-on avec le shell ?
    en faisant ./mon_programme cela me renvoie cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Synthaxe: ./ss_trouve_prog_ds_path commande
    n.b: ss_trouve_prog_ds_path etant mon programme.

  9. #9
    Membre confirmé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Points : 646
    Points
    646
    Par défaut
    La réponse est dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if [ $# -ne 1 ] ; then
            echo "Synthaxe: $0 commande" >&2 ; exit 1
    fi
    fais un tout petit test avec un petit script qui t'affiche $# $1 $2 .. et revient nous voir !

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    oui, c'est ca mais comment execute-t-on avec le shell ?
    en faisant ./mon_programme cela me renvoie cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Synthaxe: ./ss_trouve_prog_ds_path commande
    Ben voilà. Tu viens de répondre toi-même à ta question car tu as exécuté ton programme avec le shell comme tu le demandes et il a parfaitement répondu au code que tu as toi-même écrit (code montré par bizulk dans le post précédant le mien).

Discussions similaires

  1. erreur d'execution de mon programme en perl
    Par chella dans le forum Langage
    Réponses: 5
    Dernier message: 18/05/2011, 12h32
  2. erreur d'execution d'un programme
    Par marouene19 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/12/2010, 09h21
  3. Erreur: à l'execution d'un programme utilisant CURL
    Par webfranc dans le forum Dev-C++
    Réponses: 0
    Dernier message: 14/12/2008, 10h33
  4. Source Programme / Erreur d'execution
    Par ZIED dans le forum Delphi
    Réponses: 4
    Dernier message: 02/10/2006, 18h16
  5. Erreur Windows ! Dans l'execution d'un programme !
    Par Geoff! dans le forum OpenGL
    Réponses: 3
    Dernier message: 01/06/2006, 16h36

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