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 :

Différence de taille entre une compilation manuelle et par Makefile


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 21
    Points : 22
    Points
    22
    Par défaut Différence de taille entre une compilation manuelle et par Makefile
    Je me suis poser une petite question aujourd'hui à propos de la différence de taille entre une compilation manuelle et par Makefile. Donc pour illustrer le problème j'ai fait ce petit exemple:

    main.c:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "hello.h"
     
    int main(void)
    {
        Hello();
        return 0;
    }
    hello.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifndef _HELLO_H_
    #define _HELLO_H_
     
    void Hello(void);
     
    #endif
    hello.c:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
    #include "hello.h"
     
    void Hello(void)
    {
        printf("Hello !\n");
    }
    Compiler avec gcc comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc main.c hello.c -o Hello
    j'obtiens une taille de 20,1 ko.

    Alors qu'avec un Makefile qui ressemble à ceci:
    Code Makefile : 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
    OBJS   = main.o hello.o
    SOURCE = main.c hello.c
    HEADER = hello.h
     
    OUT   = Hello
    CC    = gcc
    FLAGS = -c
     
    all: $(OBJS)
    	$(CC) $(OBJS) -o $(OUT)
     
    main.o: main.c
    	$(CC) $(FLAGS) main.c
     
    hello.o: hello.c
    	$(CC) $(FLAGS) hello.c
     
    clean:
    	rm -f $(OBJS) $(OUT)
    J'obtiens une taille de 21,3 ko.

    Je suis d'accord que la difference est ridicule mais dans un autre projet plus volumineux sur lequel je travail la difference est beaucoup plus significative (sachant que le Makefile est identique, à part le nombre de fichier) et je me demandais donc d'où ça vient par curiusité, voilâ tout ^^

  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 690
    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 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Bonjour

    En reprenant exactement tes mêmes codes et Makefile et commandes, dans les deux cas l'exécutable a exactement la même taille.
    Je compile sur Ubuntu 22.04, avec gcc version 11.2

    Peut-être la solution est dans ta remarque à propos du Makefile qui "ressemble" à celui que tu nous montres, et plus précisément dans les détails que tu ne nous as pas donnés sur de ce qui diffère (peut-être des options "-O" ou "-strip")...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Différence de taille, entre un câble catégorie 6 et 6A
    Par marc.suisse dans le forum Hardware
    Réponses: 8
    Dernier message: 20/06/2018, 20h22
  2. Réponses: 1
    Dernier message: 04/11/2016, 16h05
  3. Réponses: 3
    Dernier message: 24/06/2015, 08h10
  4. Différence de taille entre framework 3.5 et 4
    Par maa dans le forum Framework .NET
    Réponses: 9
    Dernier message: 21/04/2013, 04h58
  5. Réponses: 14
    Dernier message: 28/08/2008, 19h27

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