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 ^^