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

 C Discussion :

Portabilité d'un programme en C ? [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut Portabilité d'un programme en C ?
    Bonjour,

    - Si le code source respecte scrupuleusement la norme ANSI_C, après compilation, peut il être éxecuté sous tout les OS (linux,windows,AIX,Unix,MVS..) ?

    -Si celui-ci utilise une API la protabilité est-elle toujours vrai après compilation ?

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par SPACHFR
    - Si le code source respecte scrupuleusement la norme ANSI_C, après compilation, peut il être éxecuté sous tout les OS (linux,windows,AIX,Unix,MVS..) ?
    Non. Il existe des (une ?) fonctions standards, mais dont l'effet n'est pas portable (system(), par exemple). Mais dans l'ensemble, un programme strictement conforme au standard a de fortes chances d'être portable.
    -Si celui-ci utilise une API la protabilité est-elle toujours vrai après compilation ?
    Ca dépend de l'API. Si c'est une API multi-plateforme (gtk+, pthreads, libcurl etc.), oui, le code sera portable sur ces plateformes. Si c'est une API système (POSIX.1, Win32 etc.) la portabilité sera réduite aux plateformes conformes à cette API.

    Pour POSIX.1, ça peut en faire pas mal, en gros, tout le monde unixoïde. Pour Win32, ça couvre euh... différentes version de Windows...

  3. #3
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Donc même en respectant la norme ANSI_C il est preférable de développer sous l'environnement sur lequel doit s'éxécuter le programme C.

    Merci pour ces réponses claires
    (même si ça m'arrange pas vraiment..)

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par SPACHFR
    Donc même en respectant la norme ANSI_C il est preférable de développer sous l'environnement sur lequel doit s'éxécuter le programme C.
    C'est pas vraiment ça le problème. C'est surtout qu'il faut avoir des pratiques 'portables'.

    Mais il est parfois inévitable d'utiliser des particularités des systèmes (par exemple, dans les noms de fichiers, même si la convergence unixoïde/Windows c'est améliorée, il subsiste cette notion d'unités, C:, D: etc. propre à Windows).

    Dans ce cas, on s'en sort avec la compilation conditionnelle, ce qui veut dire qu'il faut compiler son code pour chaque plateforme, afin de vérifier que le comportement est bien identique. C'est inévitable. Plus il y a de parties non portables, plus la validation multi-plateforme est longue.

  5. #5
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Merci pour ces précieux conseils.
    Essayant de développer sur un système MVS, je doit tenir compte ce cet aspect.

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Par défaut
    Sans oublier que si ton programme tourne sous des processeurs différent (Power PC, X86 ...) faudra de toutes façon recompiler. Car la compilation dépend du type de processeur.

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

Discussions similaires

  1. problème de portabilité d'un programme avec tkinter et matplotlib
    Par rafoim dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 13/11/2013, 11h52
  2. Portabilité d'un programme java 1.5 sur 1.6
    Par Bowser dans le forum Général Java
    Réponses: 10
    Dernier message: 06/06/2011, 15h54
  3. Réponses: 2
    Dernier message: 13/09/2009, 17h28
  4. CLIB et portabilité d'un programme
    Par odsen.s dans le forum C
    Réponses: 4
    Dernier message: 08/11/2006, 20h25

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