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

Systèmes de compilation Discussion :

placer dans des repertoire les resultat du makefile


Sujet :

Systèmes de compilation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 144
    Points : 54
    Points
    54
    Par défaut placer dans des repertoire les resultat du makefile
    Bonjour,
    je voudrais faire un makefile qui place les objets qu'il génèrent dans certains répertoire.
    Mes fichier .c sont dans src, je voudrait mes .so dans lib et mon executable memstat dans bin

    voici mon makefile:
    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
     
     
    CC = gcc
    FLAGS = -ansi -ggdb3
    SRC = src/
    BIN = bin/
    LIB = lib/
     
    MAX_PAGE_NUMBER = 100000
     
    all: libmalloc.so libmalloc_deb.so memstat
     
    print-debug.o: $(SRC)print-debug.c $(SRC)print-debug.h
    	$(CC) $(FLAGS) -c print-debug.c
     
    alloc.o: $(SRC)alloc.c $(SRC)alloc.h
    	$(CC) $(FLAGS) -DMAX_PAGE_NUMBER=$(MAX_PAGE_NUMBER) $< -c $(SRC)alloc.c
     
    libmalloc_deb.so: $(SRC) alloc.o $(SRC)print-debug.o
    	$(CC) $(FLAGS) -ldl -shared $(SRC)alloc.o $(SRC)print-debug.c -o libmalloc_deb.so	
     
    libmalloc.so: $(SRC)alloc.o $(SRC)print-debug.o
    	$(CC) $(FLAGS) -DNDEBUG -ldl -shared $(SRC)alloc.o $(SRC)print-debug.c -o libmalloc.so
     
    memstat: $(SRC)memstat.c $(SRC)print-debug.o $(SRC)alloc.o
    	$(CC) $(FLAGS) -DMAX_PAGE_NUMBER=$(MAX_PAGE_NUMBER) $(SRC)print-debug.o $(SRC)alloc.o $(SRC)memstat.c -o memstat
     
    clean:
    	rm -f *.o *.s memory*
    j'arrive a dirigr les entrées
    comment diriger les résultat?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 44
    Points
    44
    Par défaut
    Le compilateur gcc accepte l'option -o. Elle indique le nom du fichier résultat.

    par exemple :

    cc -c xxx.c -o obj/xxx.o

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 144
    Points : 54
    Points
    54
    Par défaut
    c'est bon j'arrive a creer les fichiers dans les repertoires
    un seul probleme subsiste
    quand je compile alloc.o il me dit que la variable MAX_PAGE_NUMBER n'existe pas
    alors que je l'ai defini dans la compilation
    ps: sa marche avec la lignes de memstat



    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
     
    CC = gcc
    FLAGS = -ansi -ggdb3
    SRC = src/
    BIN = bin/
    LIB = lib/
     
    MAX_PAGE_NUMBER = 100000
     
    all: libmalloc.so libmalloc_deb.so memstat 
     
    print-debug.o: $(SRC)print-debug.c $(SRC)print-debug.h
    	$(CC) $(FLAGS) -c print-debug.c
     
    alloc.o: $(SRC)alloc.c $(SRC)alloc.h $(SRC)print-debug.o
    	$(CC) $(FLAGS) -DMAX_PAGE_NUMBER=$(MAX_PAGE_NUMBER) $<  $(SRC)alloc.c
     
    libmalloc_deb.so: $(SRC)alloc.o $(SRC)print-debug.o
    	$(CC) $(FLAGS) -ldl -shared $(SRC)alloc.o $(SRC)print-debug.c -o lib/libmalloc_deb.so	
     
    libmalloc.so: $(SRC)alloc.o $(SRC)print-debug.o
    	$(CC) $(FLAGS) -DNDEBUG -ldl -shared $(SRC)alloc.o $(SRC)print-debug.c -o lib/libmalloc.so
     
    memstat: $(SRC)memstat.c $(SRC)print-debug.o $(SRC)alloc.o
    	$(CC) $(FLAGS) -DMAX_PAGE_NUMBER=$(MAX_PAGE_NUMBER) $(SRC)print-debug.o $(SRC)alloc.o $(SRC)memstat.c -o bin/memstat
     
    clean:
    	rm -f $(SRC)*.o $(LIB)*.so $(BIN)memstat memory*

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 44
    Points
    44
    Par défaut
    De mémoire le -Dxxxx=vvvv permet de définir une macro qui sera utilisée par le préprocesseur.
    Comment l'utilises tu ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 144
    Points : 54
    Points
    54
    Par défaut
    je marque -DMAX_PAGE_NUMBER=($MAX_PAGE_NUMBER)

    dans la ligne de compilation, je comprend pas pourqoi sa marche avec la ligne de memstat et pas avec celle de alloc.o

Discussions similaires

  1. Récupérer des fichiers dans des repertoires et sous répertoires
    Par philcphilc dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 05/09/2013, 19h37
  2. Réponses: 8
    Dernier message: 25/08/2010, 08h06
  3. [MySQL] stocker dans une variable les resultats d'un while
    Par vinze60 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/02/2010, 15h20
  4. Réponses: 3
    Dernier message: 11/05/2007, 17h46
  5. Réponses: 2
    Dernier message: 21/05/2006, 14h02

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