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 :

probleme de compilation separee


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut probleme de compilation separee
    Bonjour,

    comme le dit le titre du sujet, je désire faire une compilation séparé.

    Normallement pour compiler et éditer les liens, je tape ceci ds le shell (terminal linux) :

    mais mon problème est qu'il me renvoie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bash: []$: command not found
    et si je tape ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ ]$ gcc pile.c -o pile
    il renvoit :

    Qn peut-il me dire comment faire pour lancer une compilation séparée ??

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Tu veux peut-être parler de compilation séparée ?

  3. #3
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    oui c'est bien de ça que je parle

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Pourquoi tapes tu []$ en debut de ligne ? Il suffit de taper :
    gcc pile.c -o pile

  5. #5
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    mais justement, c'est pour une compilation séparée
    en tapant simplement

    il n'éditera pas les liens entre les fichiers d'extension .h

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Par défaut
    Tu veux peut ètres parler du fichier objet (.o) ?

    Si c'est le cas, pour avoir un fichier objet il suffit de taper :

    Ensuite si tu veux avoir un exécutable il faut passer par la case édition de liens soit : ensuite pour lancer ton exécutable : Voilà, ma première réponse sur le forum, en espérant pas avoir dit de connerie !

    @+

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par je®ome
    mais justement, c'est pour une compilation séparée
    Est-ce que tu sais ce qu'est une compilation séparée? C'est lorsqu'un projet est composé de plusieurs codes sources (.c). Chaque fichier doit être compilé séparemment pour produire un fichier objet (.o, .obj).
    Les fichiers objets sont ensuite assemblés (ainsi que le contenu des bibliothèques nécessaires) pour produire l'exécutable final. Ca, c'est le boulot de l'éditeur de lien.

    A aucun moment dans tes messages précédents tu ne fais de compilation séparée. Ta première erreur est due à une méconnaissance du shell.
    Il y a des tutoriels sur ce site et celui d'Emmanuel Delahaye sur l'organisation de projets et les Makefiles.

  8. #8
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    j'ai un fichier (d'entête) "base.h"

    un fichier (d'entête) "pile.h" qui inclut "base.h" (les liens dont je parle)

    et le fichier (source) "pile.c" qui lui à son tour inclut "pile.h"

    en tapant simplement

    ou encore

    ça ne marche pas ,car il ne crée pas les liens entre les diffèrents fichiers.

    J'espère que maintenant c'est clair pour tout le monde.

    Merci de votre aide

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Par défaut
    Est ce que gcc te renvoie des erreurs ? si oui, lesquelles ?
    Autrement poste ton code qu'on puisse voir a quoi sa ressemble !

    @+

  10. #10
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    là encore, je ne vois pas de compilation séparée : tu n'as qu'un fichier source. Les fichiers entêtes sont inclus (#include) dans le fichier source. Le compilateur ne voit qu'un seul fichier.
    Je ne comprends pas ce que tu entends par 'liens'. L'édition de lien est la phase finale de la compilation, lorsque l'éditeur de lien ajoute le code des fonctions appelées. Ce peut être les fonctions standard (printf, par exemple) ou des fonctions qui sont définies par toi dans d'autres fichiers sources.
    Il faudrait que tu sois plus précis sur les problèmes que tu rencontres (messages d'erreur, contenu des fichiers...).

  11. #11
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    Voici mopn code :

    fichier enête "base.h"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio>
    #include <stdlib>
    #include <string>
    #define vrai 1
    #define faux 0
    typedef unsigned char Bool;
    typedef unsigned short;
    fichier entête "pile.h"



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "base.h"
    #define n 100
    typedef struct spile { Nat v[n]; Nat h;} Pile ;
    Pile empiler (Pile p,Nat x);
    Pile depiler (Pile p);
    Pile sommet (Pile p);
    Pile hauteur (Pile p);
    Pile pilenouv();
    Pile vide (Pile);
    Pile remplacer (Pile Nat);
    et mon fichier source "pile.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
    #include "pile.h"
     
    Pile empiler (Pile p,Nat x)
    {
    	p.v[p.h]=x ;
    	p.h=p.h +1 ;
    	return p;
    }
     
    Pile depiler (Pile p)
    {
    	p.h = p.h -1 ;
    	return p;
    }	
     
    Pile pilenouv()
    {
    	Pile q;
    	q.h = 0;
    	return q;
    }
     
    Nat sommet (Pile p)
    {
    	q = p.v[p.h-1];
    	return q;
    }
     
    Nat hauteur (Pile p)
    {
    	return p.h;
    }
     
    Bool vide (Pile p);
    {
    	if (p.h == 0) vrai;
    	else faux;
    }
     
    Pile remplacer (Pile p,Nat x)
    {
    	p.v[p.h -1]=x ;
    	return p;	
    }
     
    int main ()
    {
    	Pile p,q,r;
    	p = empiler(empiler(pilenouv(),5),7);
    	q = depiler (p);
    	r = remplacer (p,3);
    	printf("\n sommet:%d;hauteur:%d",sommet(p),hauteur(p));
    	printf("\n sommet:%d;hauteur:%d",sommet(q),hauteur(q));
    	printf("\n sommet:%d;hauteur:%d",sommet(r),hauteur(r));
    }
     
     
    }
    Merci de m'aider

  12. #12
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par je®ome
    j'ai un fichier (d'entête) "base.h"

    un fichier (d'entête) "pile.h" qui inclut "base.h" (les liens dont je parle)

    et le fichier (source) "pile.c" qui lui à son tour inclut "pile.h"

    en tapant simplement

    ou encore

    ça ne marche pas ,car il ne crée pas les liens entre les diffèrents fichiers.

    J'espère que maintenant c'est clair pour tout le monde.

    Merci de votre aide
    Commencons par le debut :
    * Les fichiers .h sont inclus dans les fichiers avec la directive de precompilation #include (le precompilateur va remplacer la ligne #include "fichier.h" par le contenu de fichier.h), il n'y a pas de liens a gerer entre les fichiers .h et le fichier .c lors de la compilation.
    * Les liens entre les fichiers sont presents entre les differents fichiers sources (fichiers .c).
    * En utilisant , on n'effectue que la compilation du fichier pile.c et pas l'edition de lien, tu cree ainsi le fichier objet (fichiers .o).
    *ensuite en appelant gcc avec les differents fichiers objets tu invoques l'editeur de lien qui va rattache tout ca dans l'executable.

    Dans ton cas, puisque tu as un unique fichier source, fonctionne tres bien.
    Si tu avais eu plusieurs fichiers sources (par exemple pile.c et main.c), il aurait fallu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gcc -c pile.c -o pile.o
    gcc -c main.c -o main.o
    gcc pile.o main.o -o pile
    ou pluis simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc pile.c main.c -o pile
    Dans tout les cas, les caracteres []$ n'ont rien a faire dans ta ligne de commande

  13. #13
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par je®ome
    Voici mopn code :

    fichier enête "base.h"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio>
    #include <stdlib>
    #include <string>
    #define vrai 1
    #define faux 0
    typedef unsigned char Bool;
    typedef unsigned short;
    Il manque les .h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    Et typedef unsigned short; n'est visiblement pas complete

    Citation Envoyé par je®ome
    fichier entête "pile.h"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "base.h"
    #define n 100
    typedef struct spile { Nat v[n]; Nat h;} Pile ;
    Pile empiler (Pile p,Nat x);
    Pile depiler (Pile p);
    Pile sommet (Pile p);
    Pile hauteur (Pile p);
    Pile pilenouv();
    Pile vide (Pile);
    Pile remplacer (Pile Nat);
    Nat ne correspond a rien de connu ici

  14. #14
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    aie aie aie,

    merci j'ai résolu mon problème.
    il y avait un truc que je n'avais pas capté

    en fait [ ]$ , ça ne veut rien dire d'autre que prompt pour shell.

    donc je tape qd même

    gcc -o pile pile.c

    avec les modifications .h et Nat et mon prog fonctionne à merveille.

    Encore une fois merci

Discussions similaires

  1. [API][Cup] problem niveau compilation
    Par KoLziG dans le forum Général Java
    Réponses: 1
    Dernier message: 02/01/2005, 19h30
  2. [JSP & TAGLIB] Probleme de compilation
    Par GesMo dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 17/05/2004, 15h03
  3. Probleme de Compilation de la STL
    Par stoluup dans le forum MFC
    Réponses: 3
    Dernier message: 05/05/2004, 17h25
  4. [TP]Probleme de compilation sous TP7
    Par yffick dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 18/12/2003, 20h32
  5. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/09/2003, 13h43

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