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 :

Tout programme c nécessite-t-il un .o?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut Tout programme c nécessite-t-il un .o?
    Bonjour,

    Je voulais savoir ce qu'était précisément un .o. Je comprend que c'est un fichier compilé qui sert à créer l'executable en C, lorsqu'il est compilé par gcc. Cela m'amène à la question, est ce que tout programme c nécessite un .o? La question sous jacente étant: est ce que tout programme c est compilé par gcc (je parle en général, par exemple sous visual ou devc++) ou gcc est il un compilateur parmis tant d'autres, et donc pas forcément de .o en c. Merci.

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par petdelascar
    et donc pas forcément de .o en c. Merci.
    de .o en .c c'est pas possible.
    Aller sur www.wotsit.org mais j'ai pas trouvé le format .o

  3. #3
    Membre chevronné
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Par défaut
    gcc est un compilateur parmi d autres, mais les autres aussi passent par la génération des fichiers .o puis les rassemebler pendant la génération des liens.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut
    de .o en .c c'est pas possible.
    Je veux dire par là, par forcément de .o en langage C.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut
    ok merci karami.

  6. #6
    Membre chevronné
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Par défaut
    Citation Envoyé par petdelascar
    ok merci karami.
    de quoi ca te derange les .o, si tu travaille avec gcc tu peux passer directement du c en executable par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -o fichier_exe fichier.c

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par petdelascar
    Je veux dire par là, par forcément de .o en langage C.
    Que veux-tu faire précisément ? Une fois qu'un code source en C a été interprété et compilé c'est pas possible de faire marcher arrière.
    ll y a eu des outils pour retranscrire du code assembleur par exemple en source C mais cela ne donnait pas des résultats convaincants.

  8. #8
    Membre confirmé Avatar de O( N )
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2006
    Messages : 126
    Par défaut
    Oula Oula ...

    Faut lire les cours de C, car c'est indiqué dedans !

    Les points o représentent la version objet de ton code écrit en C c'est une transition entre le fichier terminal qui sera un exécutable et ton code de départ que tu écris !

    Quand tu veux que ton programme fonctionne sur une plateforme (Système d'exploitation et machine physique) particulière tu doit le compiler!
    Cela se fait en deux étapes (au moins)
    la génération de ton code de programmation (c) en fichier objets transformables et additionnables à d'autres (cette opération se fera dans l'édition de liens) qui formeront l'exécutable final.

    Quelque soit le compilateur, tu aura toujours de points 'o' puis des exécutables lorsque toute la compilation se sera bien passée

    Les points 'o' sont persistants si tu les as crées, cependant si tu compiles pour créer un exécutable, les points 'o' générés disparaitront à la fin de la compilation et n'auront été qu'un passage utile à la compilation.

    Citation Envoyé par KARAMI
    de quoi ca te derange les .o, si tu travaille avec gcc tu peux passer directement du c en executable par :

    Code :

    gcc -o fichier_exe fichier.c

    Désolé mais l'option -o renomme uniquement le fichier de sortie qui par défaut doit être a.out en UNIX et je ne sais pas quoi sous d'autres systèmes d'exploitations, mais en aucun cas elle empêchera la génération des points 'o', il seront seulement effacés parceque non demandé expressement c'est tout !

    pour obtenir un point 'o' c'est l'option '-c' du compilateur gcc !

  9. #9
    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 petdelascar
    Je voulais savoir ce qu'était précisément un .o.
    C'est un fichier dit 'objet' (je ne sais pas ce que ça veux dire exactement, ça vient sans doute des débuts de l'informatique). En tout cas, c'est le résultat de la compilation d'une unité de compilation (.c et .h inclus). Ce fichier est composé en majorité de bytes représentants du code exécutables (instructions machine), plus quelques indication indiquant les noms des variables et des fonctions définies extérieurement. Ce sont les identificateurs non résolus (printf, errno, MaFonctionGenialeCodeeAilleurs etc.).

    L'éditeur de lien, qui sait quels sont les .o/.obj du projet et les .a/.lib (bibliothèques) du projet, tente de résoudre tous les liens manquants entre les .o et de créer le fichier exécutable . /.exe etc.)

    Les détails des fichiers dépendent de chaque couple compilateur / éditeur de liens utilisé.
    Je comprend que c'est un fichier compilé qui sert à créer l'executable en C, lorsqu'il est compilé par gcc. Cela m'amène à la question, est ce que tout programme c nécessite un .o?
    C'est une question d'implémentation, mais je dirais qu'il est difficile de s'en passer (je me demande si la norme ne parle pas de 'fichier intermédiaire')...
    La question sous jacente étant: est ce que tout programme c est compilé par gcc (je parle en général, par exemple sous visual ou devc++) ou gcc est il un compilateur parmis tant d'autres, et donc pas forcément de .o en c.
    Avec d'autres compilateurs pour MS-DOS/Windows, par exemple, la compilation produit un .obj, mais le principe est le même...

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par petdelascar
    Cela m'amène à la question, est ce que tout programme c nécessite un .o? .

    ?? Les personnes qui m'ont précédé l'ont dit : les fichiers .o se sont des fichiers intermédiaires dans la compilation.
    L'éditeur de lien dont parle Emmannuel ne peut pas faire d'exécutable binaire s'il n'ya pas de fichier objet

  11. #11
    Membre confirmé Avatar de O( N )
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2006
    Messages : 126
    Par défaut
    Curiosité

    Est-ce 'a.exe', 'main.exe' qui est le nom du fichier exécutable par défaut sous Dos/Windows sous le gcc pour windows ?

    (car gcc est un un produit GNU non ?)

  12. #12
    Membre chevronné
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Par défaut
    Citation Envoyé par O( N )
    Curiosité

    Est-ce 'a.exe', 'main.exe' qui est le nom du fichier exécutable par défaut sous Dos/Windows sous le gcc pour windows ?

    (car gcc est un un produit GNU non ?)
    C est "a.exe" si tu utilise par exmeple cygwin sous windows.
    mais pour mon post j ai ecrit "fichier_exe" pas necessairement d extension.

  13. #13
    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 O( N )
    Est-ce 'a.exe', 'main.exe' qui est le nom du fichier exécutable par défaut sous Dos/Windows sous le gcc pour windows ?

    (car gcc est un un produit GNU non ?)
    Oui, mais sous Windows, ce sont des portages (MinGW, CygWin...)

    Avec MinGW, on obtient a.exe.

    t'ain.. grillaid...

  14. #14
    Membre confirmé Avatar de O( N )
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2006
    Messages : 126
    Par défaut
    Y-a-t-il des tutoriels sur les portages ou les émulateurs de systèmes dans développez ?
    (J'avoue je n'ai pas vraiment cherché , c'est juste comme çà ! )
    Les comprendres, réaliser des bouts (bon c'est plutôt dur, mais bon l'idée est là !)

  15. #15
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par O( N )
    (car gcc est un un produit GNU non ?)
    oui mais sous Windows un exécutable doit avoir l'extension .exe ou .com ou bien .sys ou .dll

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

Discussions similaires

  1. « Tout programme de transformation numérique va mener à l’adoption des API »
    Par Hinault Romaric dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 22/05/2015, 11h56
  2. Peut-on tout programmer en Assembleur ?
    Par suliman dans le forum Assembleur
    Réponses: 25
    Dernier message: 21/05/2010, 19h12
  3. Impossible d'installer tout programme sur windows vista
    Par nbo dans le forum Administration
    Réponses: 10
    Dernier message: 26/05/2008, 14h09
  4. Quel langage pour programme ne nécessitant pas d'install ?
    Par burnedsoul dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 09/03/2006, 19h23
  5. raccourci dans tout le programme
    Par greg778 dans le forum Composants VCL
    Réponses: 19
    Dernier message: 11/11/2005, 12h53

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