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:
1 2 3 4 5 6 7
| #include "hello.h"
int main(void)
{
Hello();
return 0;
} |
hello.h:
1 2 3 4 5 6
| #ifndef _HELLO_H_
#define _HELLO_H_
void Hello(void);
#endif |
hello.c:
1 2 3 4 5 6 7
| #include <stdio.h>
#include "hello.h"
void Hello(void)
{
printf("Hello !\n");
} |
Compiler avec gcc comme ceci
gcc main.c hello.c -o Hello
j'obtiens une taille de 20,1 ko.
Alors qu'avec un Makefile qui ressemble à ceci:
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 ^^
Partager